smthan 发表于 2014-6-1 10:06:15

23 BodyCollector选择容器

本帖最后由 smthan 于 2014-6-1 10:09 编辑

请教:
       这几天在学习您的教程《23 BodyCollector选择容器》,跟着视频做,调试没有问题,执行的时候,总是后报错,还请您指点一下:

点击OK后,能输出正确的信息:

再之后,报错:


日志信息显示的错误:

主要代码:
int BodySelect::apply_cb()
{
    int errorCode = 0;
    try
    {
                PropertyList *pList = bodySelect0->GetProperties();
                vector<TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
                delete pList;
                pList = NULL;
                              
                Body *body;
                int allCount = 0 , iSolid = 0, iSheet = 0 ;

                allCount = (int)vTags.size();
                for (int i=0;i<allCount;i++)
                {
                        body = dynamic_cast<Body *>(vTags);
                        if (body->IsSolidBody())
                              iSolid++;
                        else if(body->IsSheetBody())
                              iSheet++;
                }

                uc1601("Read select objects Finish!",1);
                char chs="";


                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
                uc1601(chs,1);
    }
    catch(exception& ex)
    {
      //---- Enter your exception handling code here -----
      errorCode = 1;
      BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    }
    return errorCode;
}

不知道你有遇到过类似的情况吗??
问题是出在哪里呢??
也没有什么内存需要再释放的呀


admin 发表于 2014-6-1 18:00:18

   body = dynamic_cast<Body *>(vTags);



   body = dynamic_cast<Body *>(vTags);


smthan 发表于 2014-6-2 13:14:43

本帖最后由 smthan 于 2014-6-2 14:04 编辑

谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
{
    int errorCode = 0;
    try
    {
                PropertyList *pList = bodySelect0->GetProperties();
                std::vector<NXOpen::TaggedObject *> vTags = pList->GetTaggedObjectVector("SelectedObjects");
                delete pList;
                pList = NULL;

                Body *body;
                int allCount = 0 , iSolid = 0, iSheet = 0 ;

                allCount = (int)vTags.size();
                for (int i=0;i<allCount;i++)
                {
                        body = dynamic_cast<Body *>(vTags【i】);
                        if (body->IsSolidBody())
                              iSolid++;
                        else if(body->IsSheetBody())
                              iSheet++;
                }
                char chs="";
                sprintf_s(chs,256,"选择了的对象的数量是:%d*实体的数量是:%d*片体的数量是:%d",allCount,iSolid,iSheet);
                uc1601(chs,1);
    }
    catch(exception& ex)
    {
      //---- Enter your exception handling code here -----
      errorCode = 1;
      BodySelect::theUI->NXMessageBox()->Show("Block Styler", NXOpen::NXMessageBox::DialogTypeError, ex.what());
    }

    return errorCode;
}

有点不知所措了,请指点!!!


admin 发表于 2014-6-7 17:34:23

smthan 发表于 2014-6-2 05:14
谢谢您的回复,代码我修改了一下,可在循环处,好像还是会有溢出:int BodySelect :: ok_cb()
{
    int er ...

你是 NX75 的吧

这个的确有问题 ,你用 选择对象 selection 代替吧

设置一个 mask

页: [1]
查看完整版本: 23 BodyCollector选择容器