项目与数据
- 与其他主数据一样,所有用于独立开展项目工作的零部件相关信息都存储在项目本身中。始终存在两个零部件数据库(冗余的数据管理):一个用于所有项目的中央零部件数据库,另一个是仅包含放入该项目中的零部件的项目内部零部件数据库。中央零部件数据库(系统零部件)可以是 EPLAN 数据库(*.alk)或 SQL 数据库。以下图片展示了这种情况:
- 在项目中,会从零部件项目数据库中引用零部件信息,即一个零部件(被一个功能、一个连接使用,或者作为项目的一部分由项目自身使用)只会被存储一次,但在项目中(通过零部件编号)会被引用 10 次。因此,零部件数据可以通过中央零部件数据库轻松进行更改或同步。
1、在 API 中它是如何运作的?
在 P8 API 中,项目内部部件数据库中存储的部件由“Eplan.EplApi.DataModel.Article”类来表示。在“功能”、“连接”或“项目”中对特定部件的引用由“Eplan.EplApi.DataModel.ArticleReference”类来表示。您可以通过上述类的“ArticleReferences”属性来获取“ArticleReference”对象。
若要为某个部分添加新的引用,您可以使用“Project”、“Function”或“Connection”对象上的“AddArticleReference”方法。请注意,“AddArticleReference”仅将引用添加到该部分中。同时,也会将“Article”添加到该对象中,但前提是被引用的部分已在系统或项目数据库中存在。
一般来说,存储在 P8 项目中的文章是专门创建的。因此,您应使用以下方法:void Article.Create(string partnr, string variant)。此方法会创建一个 Article 对象。如果已经存在具有该 partnr 和 variant 的零件(文章),则会抛出异常。在调用 Create 方法后,Article 对象将完全为空。只有零件编号和变体被设置,但其他属性均未填充。
若要为“文章”对象赋予主数据的属性,请使用显式函数“bool Article::LoadFromMasterdata”。使用当前的部件数据源,会将主数据中的所有(已配置的)文章数据加载到嵌入部件中。如果在主数据中找不到该文章(部件编号 + 变体),“Article::LoadFromMasterdata”将返回“false”。成功加载时返回“true”。
2、添加部件并对其进行引用
- 以下示例展示了如何在项目、功能和连接中添加及引用一篇文章:
Article oArticle = new Article();
oArticle.Create(oProject, "KUKA.KR30-3", "1"); // An empty Article is created in a Project
bool bResult = oArticle.LoadFromMasterdata(); // Article is filled with data from system parts database
oProject.AddArticleReference("KUKA.KR30-3", "1", 1); // Reference to the Article is created on a Project
oFunction.AddArticleReference("KUKA.KR30-3", "1", 1); // Reference to the Article is created on a Function
oConnection.AddArticleReference("KUKA.KR30-3", "1", 1); // Reference to the Article is created on a Connection