高级自定义 > 业务逻辑自定义 > 使用 Windchill 中的标准进行数据交换 > 使用 EXPRESS 进行 STEP 数据交换 > 实现模板 > Create 函数
  
Create 函数
在客户端应用程序 (转换器) 始终调用 Create 函数而无需事先检查与输入参数匹配的实例是否存在的意义上,Create 函数的主要行为很简单。Create 函数通过调用相应的 Get 函数来为您执行此功能。因此,Create 函数将创建并返回一个新实例,或者返回一个已存在实例的实例标识符。
Create 函数有两个主要部分。
第一部分
除了检查输入参数外,Create 函数的第一部分仅包含对相应 Get 函数的调用。如果存在与给定实际参数匹配的实例,则该函数将返回该实例的实例标识符。否则,将输入函数的第二部分。
第二部分
在第二部分中,将创建主模板实例 (REPRESENTING_PART)。实际上,这是在函数末尾进行的操作。如模板层图表中所示,模板实体位于纯 PLCS 实体之上,并且通常位于其他模板实体之上。并非所有属于模板实例结构的实例都会被创建。为了尽可能减少填充的体积/尺寸,可通过尽可能地重用已存在的实例来避免冗余。以 create_representing_part 为例,描述了第 2 部分中的步骤。
Product_category/Product_category_assignment
填充中只能有一个 Product_category (name = part)。它将被重用,并通过 Product_category_assignment.products 聚合将其链接到所有部件。xpxGetEntityExtentBN 返回给定类型的所有实例。通常,当迭代返回的实例聚合时,会造成性能损失。但是,在这种情况下,可以安全地使用此函数,因为在整个填充中最多有一个 Product_category_assignment 实例。
部件
get_assigning_identification 函数用于确定具有给定标识的部件是否已经存在。如果是这种情况,则重用该部件。否则,将创建一个新部件,并使用 create_assigning_identification 函数来附加其标识。
Part_version
随即将获取该部件的所有 Part_versions 的列表。(如果部件是新创建的,则此列表当然为空)。对于列表中的每个 Part_version,使用 get_assigning_identification 函数来确定其中之一是否具有与给定输入匹配的标识。如果是这种情况,则重用 Part_version。否则,将创建新的 Part_version 并将其连接到部件。还可以使用 create_assigning_identification 函数附加其标识。
View_definiton_context
填充中的 View_definition Context 实例的数量非常有限。因此,可以安全地迭代xpxGetEntityExtentBN 返回的聚合,而不会造成任何性能损失。View_definiton_context 通过两种分类 (life_cycle_stage 和 domain) 进行标识。如果同时存在具有两种分类的 View_definiton_context 实例,则将重用该实例。否则,将创建一个新的 View_definiton_context 实例,并使用 create_assigning_reference_data 函数来附加这两个分类。
Part_view_definition
始终会创建一个新的 Part_view_definition (因此会创建一个新的 presentation_part 实例。随即附加了 Part_version 和 View_definiton_context。
representing_part
最后,创建扩展实例 representing_part。对从属级别的前向参考已放置到位。这些前向参考使程序员的工作变得更轻松。例如,可以直接获得部件的标识。在 PLCS 中,许多关系都是“传入”关系 (例如,. Identification_assignmentClassification_assignmentAssigned_property)。因此,必须使用 Express 函数 Usedin 才能找到连接到特定部件的标识。因此,来自 representing_part 和其他扩展实体的前向参考很方便。
representing_part 属性的填充:
part_id
重用/创建的 assigning_identification 实例。
part_ver
重用/创建的 assigning_identification 实例。
重用/创建的 assigning_reference_data 实例。
life_cycle_stage
重用/创建的 assigning_reference_data 实例。
prt
重用/创建的部件 (xpxCreateInstanceBN)。
version
重用/创建的 Part_version (xpxCreateInstanceBN)。
view
始终创建 Part_view_definition 实例 (xpxCreateInstanceBN)。
contxt
重用/创建的 View_definition_context
catgy
重用/创建的 Product_category
Copy 函数
在旧数据或专有格式 (如 Windchill Express 架构) 之间来回转换时,Copy 函数并不相关。当 DEX 源填充合并到目标 DEX 填充中时,Copy 函数适用。先决条件是源和目标架构是完全相同的。
Copy 函数由两个相当简单的步骤组成。Copy 函数将源 (representing_part) 实例作为输入。Create (create_representing_part) 函数所需的输入参数是从源实例中提取的。然后,调用 Create (create_representing_part) 函数。Create 函数将返回一个已存在的实例或创建一个新实例。因此,将 Copy 函数应用于源填充中的所有实例,生成的目标填充将成为源填充与原始目标填充的并集 (或合并)。
Delete 函数
在旧数据或专有格式 (如 Windchill Express 架构) 之间来回转换时,Delete 函数通常并不相关。当随着时间的推移维护 DEX 数据库时,此类函数适用。例如,与 TruePLM 之类的应用程序连接。