函数类别
对于每个模板,有两个强制性函数,一个 Get get_representing_part 函数和一个 Create 函数 (create_representing_part)。如有必要,可根据需要实现 Copy 和 Delete 函数。
初始化
目标模型
对于隐式打开以进行写入的目标数据模型,可以使用对 initTemplateAPI 的简单调用进行初始化。如果将 'with_rdl' 参数设置为 'FALSE',则不需要 RDL。这意味着,对于所使用分类的正确性而言,转换器是独立的。如果将 'with_rdl' 参数设置为 'TRUE',则 templateAPI 将查找名称为 <target_model_name>_RDL 的 RDL 或名称为 plcsrdl 的 RDL 作为默认值。
源模型
隐式打开源模型以供读取。如果已完成,initTemplateAPI 函数将生成模板扩展实例。因此,当源模型为 PLCS 填充时,必须在初始化阶段将其暂时打开以供写入。随后,应重新打开模型仅供再次读取,以防止源模型的意外 (错误) 更新。
xpxChangeOpenMode(XPXSOURCEMODELID,xpxRW);
PLCSMODELID := XPXSOURCEMODELID;
initTemplateAPI(TRUE);
xpxChangeOpenMode(XPXSOURCEMODELID,xpxRO);
PLCSMODELIDtemplateAPI 提出的模型的标识符。默认情况下,PLCSMODELID 设置为 XPXTARGETMODELID。如果源模型是 PLCS 填充,则必须在初始化期间将 PLCSMODELID 切换为 XPXSOURCEMODELIDXPXSOURCEMODELIDXPXTARGETMODELID 是在变量中构建的 EDMxpx
Init 函数
Init 函数不仅初始化 templateAPI 本身,而且可初始化 API 所基于的模型 (PLCS 填充)。representing_part 实例通过以下调用进行初始化:
somestuff := get_representing_part(?,?,?,?,?,?,?,?,?);
init_rep_part := TRUE;
此调用将返回所有 representing_part 实例的聚合。如果尚未完成,将生成 representing_part 实例。其他模板扩展实体类型的实例以类似的方式初始化。由于许多模板都位于其他模板之上,因此某些 get_xxxxx 函数可能会调用其他 'Get' 函数。由于这些依赖性,初始化调用的顺序至关重要。出于相同的原因,某些模板除全局模板 (initialized) 外还具有自己的专有初始化标志。
Get 函数
以下内容适用于 Get 函数:
调用 Get 函数可能导致未命中、一次命中或多次命中。
如果提供了所有参数,则可能未命中或一次命中。
当所有参数都是不确定的 (值是 ?,与 Java 中的 null 相似) 时,将返回该模板类型的所有实例 (可以为无)。
提供某些参数后,Get 函数将充当搜索。在这种情况下,函数调用将返回与输入参数匹配的实例的聚合 (也可以为无)。
第一部分
如果模板扩展实例之前已初始化 (检查了专用或全局标志),则进入搜索部分。没有任何建议的方法/方式来实现搜索。实现方式完全取决于模板的结构。
第二部分
如果模板扩展实例到目前为止尚未初始化,请输入第 2 部分。如果您查看 get_representing_part,则第 2 部分的开头为:
xpxGetEntityExtentBN (PLCSMODELID,'Part_view_definition',prod_def_bag);
REPEAT i := 1 TO SIZEOF(prod_def_bag);
.......
例如,遍历填充中所有 'Part_view_definition' 实例的循环。这是模板中的 "root",每个 'Part_view_definition' 实例应有一个 representing_part 实例。其他模板类型在 "root" 和扩展实体之间具有相似的一对一对应关系。
未正确实例化的 'Part_view_definition' 实例将被静默跳过。如果预先对填充进行了正确验证,则此类事件将永远不会发生。应该抛出异常,或者至少应将实例记录为错误实例。
representing_part 属性的填充
part_id
除了承担者 Part_identification_code 之外,一个部件可能还具有许多别名标识 (例如 Part_name),但是在这种情况下,要遍历从 get_assigning_identification 返回的列表,以便找到分类为 Part_identification_code 或可能的子类型的标识。
part_ver
Part_version 最多只能有一个标识 (一个版本 ID)。因此,实用程序 helper_get_one_assigning_identification 用于获取该单一版本 (如果有)。
domain
使用 get_assigning_reference_data 函数可获得附加到 Part_view_definition.initial_context (V iew_definition_context) 的分类。即 Discipline_domain (或其子类型) 被分配给 domain
life_cycle_stage
使用 get_assigning_reference_data 函数可获得附加到 Part_view_definition.initial_context (View_definition_context) 的分类。即 Life_cycle_stage (或其子类型) 被分配给 life_cycle_stage
prt
Part_view_definition.defined_version.of_product 相同。
version
Part_view_definition.defined_version 相同。
view
是 Part_view_definition 实例本身
contxt
Part_view_definition.initial_context 相同。
catgy
xpxGetEntityExtentBN 用于在填充中查找单一产品类别。
这对您有帮助吗?