![]() |
【转帖】[求助] 块分解的问题
[求助] 块分解的问题
[求助] 块分解的问题 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,请问程序有什么问题,为什么打不开对象 看不懂 objectid是要加入database之后才有的,explode出来的对象只是内存中的线,还没加入到当前图形数据库,当然也就不会存在什么objectid了 对楼上的说法怀疑! objectid是跟随对象实例的,也就是只要生成了对象实例,实例就会拥有objectid属性,与实体对象是否已经提交到database无关,楼主的错误可能是到database去访问还没有提交到database的objectid ******************* e_mail : siebeneagle@yahoo.com.cn msn : siebeneagle@hotmail.com qq : 812928665 请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。 块爆炸后得到的实体怎样获取并显示阿? 我要做的是把插入的块explode ,然后得到其中爆炸后直线的端点。 各位大虾能否也帮帮忙 急啊。 以下是引用angel0917在的发言: 请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。 块爆炸后得到的实体怎样获取并显示阿? 我要做的是把插入的块explode ,然后得到其中爆炸后直线的端点。 各位大虾能否也帮帮忙 急啊。 再遍历一遍不就可以获得直线了啊? 都炸开了后面的就简单了 我这倒是有代码~不过和你的要求不太一样~需要改一下哦 占且没时间改哦~工作中~ 先说说你想干什么吧。 vertexobjid=pvertiter->objectid();改成 pvertex = (acdb2dvertex *)pvertiter->entity();得到对象。 |
所有的时间均为北京时间。 现在的时间是 11:32 PM. |