Bruce_Lee 发表于 2013-11-13 16:33:54

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;
这个怎么不能得到东西啊???

mildcat 发表于 2013-11-13 17:34:49

你这个 不对吧 , 既然是 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了

Bruce_Lee 发表于 2013-11-13 19:29:44

你好,就是这样的,关键是那个objects用这个方法无法得到啊,你选择完成后得到的数量为0,调试的时候,在上面两句话中就会显示有错误,什么无法计算表达式的值。现在我在想是不是8.0这个版本的Block UI Styler不太给力啊,谢谢您了!

Bruce_Lee 发表于 2013-11-13 19:33:50

我的获得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]
查看完整版本: UG8.0平台二次开发难题,怎么通过Body Collector得到Body?