UG8.0平台二次开发难题,怎么通过Body Collector得到Body?
怎么通过Body Collector得到Body?Block类型的body_select怎么得到Body或者TaggedObject。NXOpen::BlockStyler::PropertyList* faceProperties = bodySelect0->GetProperties();
std::vector<NXOpen::TaggedObject* > faceCol = faceProperties->GetTaggedObjectVector("SelectedObjects");
delete faceProperties;
这个怎么不能得到东西啊??? 你这个 不对吧 , 既然是 body 的 选择, 结果都是taggedobject
只是需要 转换
我没有测试 ,感觉的写下,这个我都可以后面录制视频的来做个例子
比如 你从UI 获取对象
NXOpen::BlockStyler:ropertyList* bodyProperties = bodySelect0->GetProperties();
std::vector<NXOpen::TaggedObject* > objects = bodyProperties ->GetTaggedObjectVector("SelectedObjects");
这一步是获取的 选择对象,类型都是 tagged objects
如果你要body就要转换
std::vector<Body *> bodies ;
for (unsigned int i = 0 ; i< objects ; i++)
{
bodies.pushback(dynamic_cast<Body *>(objects))
}
这样就得到了bodies了 你好,就是这样的,关键是那个objects用这个方法无法得到啊,你选择完成后得到的数量为0,调试的时候,在上面两句话中就会显示有错误,什么无法计算表达式的值。现在我在想是不是8.0这个版本的Block UI Styler不太给力啊,谢谢您了! 我的获得TaggedObject的代码就是这样的
BlockStyler::PropertyList*bodySelectProps = bodySelect0->GetProperties();
std::vector<NXOpen::TaggedObject *> body01 = bodySelectProps->GetTaggedObjectVector("SelectedObjects");
int num = body01.size();
char str;
sprintf_s(str,"%d",num);
uc1601(str,1);
得到显示的值是0啊
页:
[1]