Bruce_Lee 发表于 2013-11-14 10:09:21

UG8.0通过Block UI无法得到TaggedObject?是不是什么设置的问题?


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

mildcat 发表于 2013-11-14 20:12:49

你不要去抱怨任何东西,除了你自己的代码!
这个是选择前的,也就是taggedobjects 的个数






这个是转换完了的,
没有问题!!




mildcat 发表于 2013-11-14 20:14:10

代码加上,仅供参考!



        std::vector<TaggedObject *> objects = this->bodySelect0->GetProperties()->GetTaggedObjectVector("SelectedObjects");
                        std::stringstream ss;
                        ss << "选择的对象的个数是:"<< objects.size() <<endl;
                        theSession->ListingWindow()->Open();
                        theSession->ListingWindow()->WriteLine(ss.str());
                       
                        char msg;
                        sprintf_s(msg,"选择的对象的个数是: %d",(int)objects.size() );
                        uc1601(msg,1);

                        std::vector<Body *> bodies;
                        for(int i = 0 ; i < objects.size() ; i ++)
                        {
                                Body *body = dynamic_cast<Body *>(objects);
                                bodies.push_back(body);
                        }
                        ss.clear();
                        ss.str("");
                        ss << "转化为body类型的个数是 : " << bodies.size()<<endl;
                        theSession->ListingWindow()->WriteLine(ss.str());

                        sprintf_s(msg,"转化为body类型的个数是 : %d",(int)bodies.size());
                        uc1601(msg,1);


mildcat 发表于 2013-11-14 20:19:17

选择的时候 也可以直接用这个 取值

std::vector<TaggedObject *> objects = this->bodySelect0->GetSelectedObjects();

Bruce_Lee 发表于 2013-11-14 20:53:33

您好,我不知道您用的是9.0还是8.0,我在8.0上就是按您说的做的,但是就是不能得到想要的结果,不知道是否和设置有关系。我发现8.0上所有块的类型都是UIblock,而9.0上各个块都有自己的类,比如,体选择器他的类型是BodyCollector,而在8.0中他是UIBlock。这个怎么解决,还希望您能够指导,谢谢您!

admin 发表于 2013-11-15 12:33:21

Bruce_Lee 发表于 2013-11-14 12:53
您好,我不知道您用的是9.0还是8.0,我在8.0上就是按您说的做的,但是就是不能得到想要的结果,不知道是否 ...

发现你对这方面可能很不了解,

6.0以后的版本 应该都是一样的, 你查查你的代码吧

admin 发表于 2013-11-15 12:39:01

Bruce_Lee 发表于 2013-11-14 12:53
您好,我不知道您用的是9.0还是8.0,我在8.0上就是按您说的做的,但是就是不能得到想要的结果,不知道是否 ...

再不行了,你用 select object 吧, 这个控件也可以
加个过滤就行了

Bruce_Lee 发表于 2013-11-15 17:59:36

说实话我确实刚接触NXOpen,因此我想尽一切办法来搞明白这个东西是什么玩意,所以我特意找了一个9.0看了看,两个生成的代码是有些不太一样,而且帮助文档里面,9.0的UIBlock类下面有各个控件自己的类,而8.0就只有几个,不是所有的都有。而且我发现我这边8.0上那些选择的控件都不好使,我把UGOPEN里面的例子拿出来使用,也不好使。不知道是我的代码写的问题还是什么问题,确实困扰了好久。在此我非常感谢您的指导和解释,希望能够再次得到您的指导,谢谢!

Bruce_Lee 发表于 2013-11-18 09:11:00

您好,还有我不知道UG二次开发是否和VS的版本有关系?希望您能够指导我,谢谢!

Bruce_Lee 发表于 2013-11-18 09:43:26

admin 发表于 2013-11-15 12:39
再不行了,你用 select object 吧, 这个控件也可以
加个过滤就行了

说实话我确实刚接触NXOpen,因此我想尽一切办法来搞明白这个东西是什么玩意,所以我特意找了一个9.0看了看,两个生成的代码是有些不太一样,而且帮助文档里面,9.0的UIBlock类下面有各个控件自己的类,而8.0就只有几个,不是所有的都有。而且我发现我这边8.0上那些选择的控件都不好使,我把UGOPEN里面的例子拿出来使用,也不好使。不知道是我的代码写的问题还是什么问题,确实困扰了好久。在此我非常感谢您的指导和解释,希望能够再次得到您的指导,谢谢!
页: [1] 2
查看完整版本: UG8.0通过Block UI无法得到TaggedObject?是不是什么设置的问题?