目录
开发过程中发现了一个非常奇怪的问题,就是我用程序在实体中通过属性存储了一些数据,但是在NX中打开属性面板却看不到,最后才发现我存储属性时用的是实体,但是我打开的属性面板属于体,所以看不到。
1、运行效果

2、关键代码
选择筛选器配置:
//选择器过滤条件,指定了实体
std::vector<NXOpen::Selection::MaskTriple> maskVec;
NXOpen::Selection::MaskTriple maskBody(UF_solid_type,UF_solid_body_subtype,UF_UI_SEL_FEATURE_SOLID_BODY);
maskVec.push_back(maskBody);
selectObj->SetSelectionFilter(NXOpen::Selection::SelectionActionClearAndEnableSpecific,maskVec);
设置属性:
std::vector<NXOpen::TaggedObject *> objVec = selectObj->GetSelectedObjects();
if(!objVec.empty()) {
if (NXOpen::Body *body = dynamic_cast<NXOpen::Body *>(objVec[0])) {//判断是体对象
NXOpen::NXObject::AttributeInformation info;
info.Category = Keso::Utf8ToGbk("KesoPartInfo");
info.Type = NXOpen::NXObject::AttributeTypeString;
info.Title = Keso::Utf8ToGbk("KesoPartName");//设置工件名称
info.StringValue = partName->Value();
body->SetUserAttribute(info, NXOpen::Update::Option::OptionNow);
body->SetName(partName->Value());//同时设置实体名称
info.Type = NXOpen::NXObject::AttributeTypeString;
info.Title = "KesoPproductID";//设置工件编号
info.StringValue = productID->Value();
body->SetUserAttribute(info, NXOpen::Update::Option::OptionNow);
}
}
3、总结
主要原因还是自己对NX中三维对象的理解不到位,部件导航器中看到的体是特征体对象,而我设置的选择筛选是实体对象,即NXOpen::Body类对应的是实体,而不是特征体对象。
3180

被折叠的 条评论
为什么被折叠?



