麻烦大家给指点指点
<p>大家好:</p><p>我用创建选择集的方式 和一个for循环得到一个AcDbObjectIdArray 的对象 IdArray</p><p>for ( i = 0 ; i < length ; i ++ )<br/> {<br/> </p><p> ads_name en;<br/> acedSSName(ssname,i,en);<br/> <br/> acdbGetObjectId(objId, en);<br/> IDArray.append(objId);</p><p> }<br/> acutPrintf("\n%d",IDArray.length());</p><p>测试了一下 它的长度 这个没问题</p><p>接下来我想用循环 根据ID逐个打开</p><p>for ( i = 0 ; i < length ; i++ )<br/> {<br/> int n=(int)i;<br/> acdbOpenObject(pEntity,IDArray,AcDb::kForRead);</p><p> if(pEntity->isKindOf(AcDbArc::desc()))</p><p>。。。。。。。</p><p>满足条件之后将该元素移除</p><p>IDArray.removeAt(n);<br/>length--;</p><p>大家看看这样做有没有问题,我对 AcDbObjectIdArray 不太了解 那位仁兄能给详细介绍一下</p><p>小弟 不胜感激!</p> <p>逻辑错误,这样做是不对的.试试这样</p><p>for ( i = 0 ; i < IDArray.length() ;)<br/>{</p><p> if(pEntity->isKindOf(AcDbArc::desc()))</p><p> {</p><p> pEntity->erase();</p><p> pEntity->Close();</p><p> IDArray.removeAt(i);</p><p> }</p><p> else</p><p> {</p><p> i++;</p><p> }<br/>}</p> <p>而且这样做没有必要,一般用ads_sslength得到选择集的长度,直接循环 这个长度就行了,不用存到acdbobjectIdarray.</p><p>acdbobjectidArray 其实相当于 CArray<acdbobjectID,acdbobjectID></p><p></p>
页:
[1]