明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2295|回复: 6

[求助] 块分解的问题

[复制链接]
发表于 2007-9-17 14:36:00 | 显示全部楼层 |阅读模式

pBlf=AcDbBlockReference::cast(pEnt);

        AcDbVoidPtrArray bentyset;

       pBlf->explode(bentyset);

  AcDbEntity *pblent=NULL;

for (int blent=0;blent<bentyset.length();blent++)

 {

 pblent=(AcDbEntity*)bentyset.at(blent);

if (pblent->isA()==AcDb2dPolyline::desc())

            {

                 p2dpoly=AcDb2dPolyline::cast(pblent);

                 AcDbObjectIterator *pVertIter =p2dpoly->vertexIterator();

                AcDb2dVertex *pVertex;

                AcGePoint3d  location;

                AcDbObjectId  vertexObjId;

              for(int vertexNumber=0;!pVertIter->done();vertexNumber++,pVertIter->step())

                          {

                               AfxMessageBox("9");

                               vertexObjId=pVertIter->objectId();

// vertexObjId 不知为何是knull

                               if (vertexObjId!=AcDbObjectId::kNull)

                               {

                                    AfxMessageBox("qq");

                                    Acad::ErrorStatus es;

                                    es=acdbOpenObject(pVertex,vertexObjId,AcDb::kForRead);

                                    acutPrintf("%d",es);

                               }

                              

                              location=pVertex->position() ;

                               pointlist.append(location);

                              pVertex->close();*/

                          }

        

                      }

                      p2dpoly->close();

                 }

                

           }

得到的vertexObjId 总为knull,请问程序有什么问题,为什么打不开对象

发表于 2007-9-22 10:21:00 | 显示全部楼层

看不懂

发表于 2007-9-22 10:35:00 | 显示全部楼层
objectId是要加入database之后才有的,explode出来的对象只是内存中的线,还没加入到当前图形数据库,当然也就不会存在什么objectId了
发表于 2007-9-27 13:35:00 | 显示全部楼层

对楼上的说法怀疑!

objectId是跟随对象实例的,也就是只要生成了对象实例,实例就会拥有objectId属性,与实体对象是否已经提交到database无关,楼主的错误可能是到database去访问还没有提交到database的objectId

发表于 2007-10-10 16:58:00 | 显示全部楼层

请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。

块爆炸后得到的实体怎样获取并显示阿?

我要做的是把插入的块explode ,然后得到其中爆炸后直线的端点。

各位大虾能否也帮帮忙

急啊。

发表于 2007-10-15 17:21:00 | 显示全部楼层
angel0917发表于2007-10-10 16:58:00请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。块爆炸后得到的实体怎样获取并显示阿?我要做的是把插入的块explode ,然后得到其中爆炸

再遍历一遍不就可以获得直线了啊?

都炸开了后面的就简单了

我这倒是有代码~不过和你的要求不太一样~需要改一下哦

占且没时间改哦~工作中~

发表于 2007-10-24 18:24:00 | 显示全部楼层

先说说你想干什么吧。

vertexObjId=pVertIter->objectId();改成

pVertex = (AcDb2dVertex *)pVertIter->entity();得到对象。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:54 , Processed in 0.278144 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表