NX2306 C++二次开发系列(七)体和实体是不同的

       

目录

1、运行效果

2、关键代码

3、总结


开发过程中发现了一个非常奇怪的问题,就是我用程序在实体中通过属性存储了一些数据,但是在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类对应的是实体,而不是特征体对象。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

守护暗神

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值