hyxlei 发表于 2009-3-6 11:47:00

麻烦大家给指点指点

<p>大家好:</p><p>我用创建选择集的方式 和一个for循环得到一个AcDbObjectIdArray&nbsp;&nbsp;的对象 IdArray</p><p>for&nbsp; (&nbsp; i&nbsp; =&nbsp;&nbsp; 0 ; i&nbsp; &lt;&nbsp; length ; i&nbsp; ++ )<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ads_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; en;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acedSSName(ssname,i,en);<br/>&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acdbGetObjectId(objId, en);<br/>&nbsp;&nbsp;IDArray.append(objId);</p><p>&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; acutPrintf("\n%d",IDArray.length());</p><p>测试了一下 它的长度 这个没问题</p><p>接下来我想用循环 根据ID逐个打开</p><p>for&nbsp; (&nbsp; i&nbsp; =&nbsp;&nbsp; 0 ; i&nbsp; &lt;&nbsp; length ; i++ )<br/>&nbsp;{<br/>&nbsp; int n=(int)i;<br/>&nbsp; acdbOpenObject(pEntity,IDArray,AcDb::kForRead);</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(pEntity-&gt;isKindOf(AcDbArc::desc()))</p><p>。。。。。。。</p><p>满足条件之后将该元素移除</p><p>IDArray.removeAt(n);<br/>length--;</p><p>大家看看这样做有没有问题,我对 AcDbObjectIdArray 不太了解 那位仁兄能给详细介绍一下</p><p>小弟 不胜感激!</p>

cfu18 发表于 2009-3-6 21:17:00

<p>逻辑错误,这样做是不对的.试试这样</p><p>for&nbsp; (&nbsp; i&nbsp; =&nbsp;&nbsp; 0 ; i&nbsp; &lt;&nbsp;&nbsp;IDArray.length() ;)<br/>{</p><p>&nbsp; if(pEntity-&gt;isKindOf(AcDbArc::desc()))</p><p>&nbsp; {</p><p>&nbsp;&nbsp;&nbsp; pEntity-&gt;erase();</p><p>&nbsp;&nbsp;&nbsp;&nbsp;pEntity-&gt;Close();</p><p>&nbsp;&nbsp;&nbsp; IDArray.removeAt(i);</p><p>&nbsp; }</p><p>&nbsp; else</p><p>&nbsp;&nbsp; {</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i++;</p><p>&nbsp;&nbsp; }<br/>}</p>

cfu18 发表于 2009-3-6 21:20:00

<p>而且这样做没有必要,一般用ads_sslength得到选择集的长度,直接循环 这个长度就行了,不用存到acdbobjectIdarray.</p><p>acdbobjectidArray 其实相当于 CArray&lt;acdbobjectID,acdbobjectID&gt;</p><p></p>
页: [1]
查看完整版本: 麻烦大家给指点指点