NXOpen:对象属性操作¶
发布于:2018-05-04 | 分类:CAD/CAE integration
在NXOpen开发过程中,有时需要自定义与对象相关的属性并存储起来,以便进行一些初始化和计算工作。本篇记录NXOoen C++属性操作相关函数。
NXObject类成员函数SetAttribute¶
继承自NXObject
类的对象可以直接设置自定义属性:
SetAttribute(const NXString &title, T value);
其中,
-
属性名称
title
具有唯一性,不存在时新建属性,否则覆盖已存在的属性即编辑属性 -
value
参数的类型决定了该属性的类型:integer
,number
,string
根据属性的类型可以使用以下函数获取属性值:
GetIntegerAttribute(title)
获取整数类型属性GetRealAttribute(title)
获取浮点数类型属性GetStringAttribute(title)
获取字符串类型属性
注意
SetAttribute()方法自NX8起已不被推荐使用,而是使用SetUserAttribute()替代之。
NXObject类成员函数SetUserAttribute¶
// Creates or modifies an integer attribute with the option to update or not.
SetUserAttribute (const NXString &title, int index, T value, NXOpen::Update::Option option);
// get attributes
GetIntegerUserAttribute (const NXString &title, int index);
GetRealUserAttribute (const NXString &title, int index);
GetStringUserAttribute (const NXString &title, int index);
此方法创建/修改/获取属性的性质类似于SetAttribute()
方法,其更强大之处在于可以设置多值属性,即通过以上index
参数实现。
index=-1
表示该属性仅对应一个值,并非多值属性index=0,1,2...
分别设置多值属性的各个元素值- 获取属性时的
index
作用同理
属性管理器¶
使用Session
对象的属性管理器亦可管理对象属性,除了可以如SetUserAttribute()
一般设置多值属性,还可以设置Category,便于分类管理相关属性。
// get Builder
NXOpen::AttributePropertiesBuilder *builder =
theSession->AttributeManager()->CreateAttributePropertiesBuilder(
NXOpen::BasePart *part,
const std::vector<NXOpen::NXObject*> &objects,
NXOpen::AttributePropertiesBuilder::OperationType operationType
);
// set categoty
builder->SetCategory (const NXString &category);
// set title
builder->SetTitle(const NXString &title);
// set array index if necessary
builder->SetArray (bool isArray); // have more than one value if true
builder->SetArrayIndex (int arrayIndex);
// ----------以上确定具体的属性,接下来设置/获取值----------
// set value
builder->SetIntegerValue (int integerValue);
builder->SetNumberValue (double numberValue);
builder->SetStringValue (const NXString &stringValue);
// get value
builder->IntegerValue ();
builder->NumberValue ();
builder->StringValue ();
-
title
和index
唯一确定属性,不存在时新建,否则覆盖即编辑属性 -
获取属性时,
SetTitle
确定属性,如果是多值属性,还需要SetArrayIndex
确定元素位置,最终使用相应函数获取属性值。
总结¶
SetAttribute()
将被弃用,推荐SetUserAttribute()
SetUserAttribute()
可以创建多值即数组形式的属性AttributePropertiesBuilder
不仅可以创建多值属性,还可以分组管理属性- 以上方法创建的属性统一于相应对象,即完全可以交叉获取和修改