本文解释了 PLM 对象的标识符是什么,以及你可以用它做什么。
一、什么是PLM对象标识符?
PLM 对象标识符是键唯一标识 PLM 对象在数据库中。在会话中,此标识符是一个Object Modeler 组件,它实现了CATIAdpPLMIdentificator接口。
此标识符是稳定的(标识符不会更改),无论 对 PLM 对象进行了哪些修改,其中包括:
-
属性修改
-
结构修改(组件聚合、组件删除)
-
成熟度变化
其他情况:
- 如果在另一个数据库中重新创建 PLM 对象(使用导入为新对象 命令)、 它不再是同一个 PLM 对象,因此新的 PLM 对象具有另一个 PLM 对象 标识符;
- 如果 PLM 对象已进行版本控制,则新版本为新 PLM 对象 替换为新的标识符。
无论 PLM 对象的类型是什么 ( PLM 参考、 PLM 表示 参考、PLM 实例、PLM 表示实例、PLM 端口、PLM 连接), PLM 对象具有标识符。
二、你能用PLM对象标识符做什么?
2.1 在会话中加载PLM对象
PLM 对象标识符的一种用途是 负荷 会话中的 PLM 对象。 您不能直接使用组件的属性打开组件,甚至设置了标识符 attributes中,您必须具有CATIAdpPLMIdentificator接口指针。以下是打开 PLM 的方法 参考 /A PLM 表示法参考。
这两个方法的第一个参数ipCompIdentificator, 是PLM对象标识符,opCompSession 是一个 IID 会话中 PLM 对象上的界面指针。
请注意,此方法列表是详尽的。这意味着即使所有种类 PLM 对象(实例、端口、连接、引用)具有标识符,您可以 仅以根身份打开独立的 PLM 对象:PLM 参考和 PLM 表示参考。 但是,当打开 PLM 参考时,其聚合组件 (instance, port, connections) 也被加载。
2.2 进行“短事务”操作
还可以使用 PLM 对象标识符将 "short transaction"操作。换句话说,直接在数据库中修改 PLM 对象:
-
Change the maturity using
ApplyMaturityTransitionof the CATAdpMaturityServices class ; -
Version the component using NewVersion of the CATAdpVersioningServices class;
-
Compute the rep size using
GetRepresentationsDataSizeof the CATAdpDataSizeServices class;
除最后一种情况外,不得在会话中将 PLM 对象加载到 应用操作。
2.3 检索PLM对象标识符集合属性。
使用 CATIAdpPLMIdentificator 接口,您可以检索标识符集属性。那里是类CATAdpQueryServices的方法GetIdentificationSet 方法。但此方法仅对设置了标识符的 PLM 对象有效。
2.4 比较PLM对象
PLM 对象标识符的另一种用途是比较 PLM 对象。 有 IsEqual方法以进行比较。
...
CATIAdpPLMIdentificator* pAdpMycomp1 = ... ;
CATIAdpPLMIdentificator* pAdpMycomp2 = ... ;
CATBoolean Equal ;
pAdpMycomp2->IsEqual(pAdpMycomp1,Equal) ;
if ( TRUE == Equal )
{
....
2.5 建立PLM对象的哈希表
CATIAdpPLMIdentificator的 ComputeHaskKey方法 interface 使您能够检索密钥编号以创建哈希表 。
三、如何检索PLM对象标识符?
3.1 从数据库检索
如果PLM对象未在会话中打开,则检索其PLM对象标识符,唯一的方法是进行数据库查询。有两种查询:
- 使用标识符集的查询attributes和 PLM 对象类型 。
【_CATAdpQueryServices】_类的方法【GetElementByIdentificationSet】。 在这种情况下,只有一个结果,因为 identifier set attributes对于PLM对象类型是唯一的。
- 使用一组属性和PLM对象自定义的查询键入。
类【_CATAdpQueryServices】的_方法【GetElementsFromAttributes】 。在这种情况下, result 可以是多个。
3.2 从会话中的PLM对象
会话中的所有PLM对象都实现 CATIPLMComponent接口(这就是为什么我们在会话中称它们为 PLM 组件)。此接口通过 GetAdpID方法使您能够 以检索 PLM 对象标识符。
四、PLM对象标识符有效性
4.1 部分有效PLM对象仍未保存
PLM 对象标识符由几个部分组成,这些部分有些API仅在首次在数据库。当PLM对象在数据库中不存在时(保存 已执行)无法执行空头交易(即远程操作)。但是您可以使用它来比较两个 PLM 对象,或创建哈希表键。 保存操作不会更改任何可能更改比较测试或更改键值的内容由 ComputeHaskKey方法返回。
但请注意,一旦 PLM 对象被保存为第一个 time 中,则必须重新询问 CATIAdpPLMIdentificator接口 pointer 具有有效的指针。 下面是一个简单的方案:
...
Create Component (CATIPLMComponent *pCompInsession=....)
CATIAdpPLMIdentificator* pAdpMycomp = NULL ;
pCompInsession->GetAdpID(pAdpMycomp);
pAdpMycomp->IsValidForRemoteUsage returns FALSE
Save Session
pAdpMycomp-> IsValidForRemoteUsage always returns FALSE
pAdpMycomp->Release();
pCompInsession->GetAdpID(pAdpMycomp);
pAdpMycomp->IsValidForRemoteUsage returns TRUE
...
4.2 在PLM对象卸载后仍然有效
相同的 CATIAdpPLMIdentificator 接口指针可以是重新用于重新打开PLM对象或在PLM对象PLM对象已从会话中卸载。请考虑以下两种情况:
4.2.1 从 CATAdpQueryServices 类的一个方法中检索标识符
...
CATIAdpPLMIdentificator* pAdpMycomp = NULL ;
CATAdpIdentificationSet MyAttributeSetsForMyComp ;
CATIAdpType *pCATIAdpTypeForMyComp = .... ;
CATAdpQueryServices::GetElementByIdentificationSet(pCATIAdpTypeForMyComp ,MyAttributeSetsForMyComp ,pAdpMycomp )
CATIPLMComponent * pCompInsession = NULL ;
CATOmbLifeCycleRootsBag Bag ;
CATAdpOpener opener(Bag);
opener.CompleteAndOpen(pAdpMycomp ,IID_CATIPLMComponent,pCompInSession) ;
.....
Bag->RemoveRoot(pCompInSession);
...
opener.CompleteAndOpen(pAdpMycomp ,IID_CATIPLMComponent,pCompInSession) ;
在此方案中,标识符是从 CATAdpQueryServices类的 GetElementByIdentificationSet方法中检索的。接下来,PLM对象是 在 session 中使用 CompleteAndOpen方法加载。此后, 会话中 PLM 对象 (称为 PLM 组件) 的生命周期,pCompInSession为 由 bag 对象 管理。在 RemoveRoot方法之后, PLM Component 已卸载。但 尽管如此,pAdpMycomp指针仍然有效。您可以 使用它来重新打开组件,或进行简短的事务操作。
4.2.2 从 CATIPLMComponent 接口检索标识符
...
CATIPLMComponent * pCompInsession = ...;
CATIAdpPLMIdentificator* pAdpMycomp = NULL ;
pCompInsession->GetAdpID(pAdpMycomp);
CATOmbLifeCycleRootsBag Bag ;
Bag->InsertRoot(pCompInSession);
.....
Bag->RemoveRoot(pCompInSession);
...
CATIPLMComponent * pNewCompInsession = NULL ;
opener.CompleteAndOpen(pAdpMycomp ,IID_CATIPLMComponent,pCompInSession) ;
在此方案中,您已在具有之前已加载。检索标识符 使用 CATIPLMComponent接口的GetAdpID方法。但是,在 RemoveRoot方法之后,pAdpMycomp指针仍然有效。您可以 使用它来重新打开组件,或进行简短的事务操作。
总结
PLM 对象标识符由CATIAdpPLMIdentificator界面处理。它是标识 数据库中的 PLM 对象。您可以 将其用于以下操作:
-
加载PLM对象(仅限PLM参考和PLM表示) 参考资料)
-
应用短事务操作(直接在数据库中修改)
-
比较PLM对象
还了解到 PLM 对象标识符始终有效,即使 如果已从会话中卸载 PLM 对象。
评论