[求助] 块分解的问题
<p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;">pBlf=AcDbBlockReference::cast(pEnt);<p></p></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 1;"> AcDbVoidPtrArray bentyset;<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-spacerun: yes;"> pBlf->explode(bentyset);<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-spacerun: yes;"> AcDbEntity *pblent=NULL;<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;">for (<span style="COLOR: blue;">int blent=0;blent<bentyset.length();blent++)<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-spacerun: yes;"> {<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-spacerun: yes;"> pblent=(AcDbEntity*)bentyset.at(blent);<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;">if (pblent->isA()==AcDb2dPolyline::desc())<p></p></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 2;"> {<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 3;"> p2dpoly=AcDb2dPolyline::cast(pblent);<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 3;"> AcDbObjectIterator *pVertIter =p2dpoly->vertexIterator();<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 3;"> AcDb2dVertex *pVertex;<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 3;"> AcGePoint3d location;<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 3;"> AcDbObjectId vertexObjId;<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt 9pt; TEXT-INDENT: -9pt; TEXT-ALIGN: left; mso-layout-grid-align: none; mso-char-indent-count: -1.0;"><span style="mso-tab-count: 4;"> for(int vertexNumber=0;!pVertIter->done();vertexNumber++,pVertIter->step())<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 5;"> {<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> AfxMessageBox("9");<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> vertexObjId=pVertIter->objectId();<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;">// vertexObjId 不知为何是<span lang="EN-US">knull<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> if (vertexObjId!=AcDbObjectId::kNull)<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> {<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 7;"> AfxMessageBox("qq");<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 7;"> Acad::ErrorStatus es;<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> es=acdbOpenObject(pVertex,vertexObjId,AcDb::kForRead);<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 7;"> </span>acutPrintf("%d",es);<p></p></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> }<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> <p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> <span style="mso-spacerun: yes;"> location=pVertex->position()</span></span><font face="Times New Roman"> </font>;<p></p></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> </span><span style="mso-spacerun: yes;"> pointlist.append(location);<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 6;"> pVertex->close();*/<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 5;"> }<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 2;"> <p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 4;"> }<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 4;"> p2dpoly->close();<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 3;"> }<p></p></span></p><p class="MsoNormal" align="left" style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-layout-grid-align: none;"><span style="mso-tab-count: 3;"> <p></p></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;"><span style="mso-tab-count: 2;"> }</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt;">得到的vertexObjId 总为knull,请问程序有什么问题,为什么打不开对象</p> <p>看不懂</p> objectId是要加入database之后才有的,explode出来的对象只是内存中的线,还没加入到当前图形数据库,当然也就不会存在什么objectId了 <p>对楼上的说法怀疑!</p><p>objectId是跟随对象实例的,也就是只要生成了对象实例,实例就会拥有objectId属性,与实体对象是否已经提交到database无关,楼主的错误可能是到database去访问还没有提交到database的objectId</p> <p>请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。</p><p>块爆炸后得到的实体怎样获取并显示阿?</p><p>我要做的是把插入的块explode ,然后得到其中爆炸后直线的端点。</p><p>各位大虾能否也帮帮忙</p><p>急啊。</p> angel0917发表于2007-10-10 16:58:00static/image/common/back.gif请问楼主的问题解决了没有?能否告诉我啊?我也有类似的问题,我的毕业设计,这个问题解决不了很着急啊。块爆炸后得到的实体怎样获取并显示阿?我要做的是把插入的块explode ,然后得到其中爆炸<p>再遍历一遍不就可以获得直线了啊?</p><p>都炸开了后面的就简单了</p><p>我这倒是有代码~不过和你的要求不太一样~需要改一下哦</p><p>占且没时间改哦~工作中~</p> <p>先说说你想干什么吧。</p><p><font face="新宋体">vertexObjId=pVertIter->objectId();改成</font></p><p class="signature"><font face="新宋体">pVertex = (AcDb2dVertex *)pVertIter-></font>entity();得到对象。</p>
页:
[1]