【发布时间】:2021-10-30 21:13:15
【问题描述】:
我有一个从旧版 NX UF(用户函数,基于古老的原始 C API)API 调用返回的标签,我想将它表示的对象传递给 NX Open API 调用。但是 NX Open 调用使用 NX Open 类(例如 NXObject 或 Part)而不是标签。
如何将此标签转换为NXObject?
【问题讨论】:
标签: nxopen
我有一个从旧版 NX UF(用户函数,基于古老的原始 C API)API 调用返回的标签,我想将它表示的对象传递给 NX Open API 调用。但是 NX Open 调用使用 NX Open 类(例如 NXObject 或 Part)而不是标签。
如何将此标签转换为NXObject?
【问题讨论】:
标签: nxopen
NXOpen::NXObjectManager::Get 是专门为此设计的。它返回一个NXOpen::TaggedObject*,需要将dynamic_cast<> 编辑为适当的类型。
#include <NXOpen/NXObjectManager.hxx>
#include <NXOpen/Part.hxx>
tag_t myTag = ...;
NXOpen::TaggedObject *myObj = NXOpen::NXObjectManager::Get(myTag);
// Cast it to the appropriate type:
NXOpen::Part* myPart = dynamic_cast<NXOpen::Part*>(myObj);
// Do something with myPart...
NXObjectManager 在 NXOpen.Utilities 命名空间中:
using NXOpen.Part;
using NXOpen.Tag;
using NXOpen.TaggedObject;
using NXOpen.Utilities;
Tag myTag = ...;
TaggedObject myObj = Utilities.NXObjectManager.Get(myTag);
Part myPart = (Part)myObj;
// Do something with myPart...
在 Java 中使用 nxopen.TaggedObjectManager。您必须从 nxopen.Session 类中获取它的实例:
using nxopen.Part;
using nxopen.Session;
using nxopen.SessionFactory;
using nxopen.Tag;
using nxopen.TaggedObject;
Tag myTag = ...;
Session session = (Session)SessionFactory.get("Session");
TaggedObject myObj = session.taggedObjectManager().get(myTag);
Part myPart = (Part)myObj;
// Do something with myPart...
【讨论】: