![]() |
【转帖】麻烦大家给指点指点
麻烦大家给指点指点
麻烦大家给指点指点 大家好: 我用创建选择集的方式 和一个for循环得到一个acdbobjectidarray 的对象 idarray for ( i = 0 ; i < length ; i ++ ) { ads_name en; acedssname(ssname,i,en); acdbgetobjectid(objid, en); idarray.append(objid); } acutprintf("\n%d",idarray.length()); 测试了一下 它的长度 这个没问题 接下来我想用循环 根据id逐个打开 for ( i = 0 ; i < length ; i++ ) { int n=(int)i; acdbopenobject(pentity,idarray[n],acdb::kforread); if(pentity->iskindof(acdbarc::desc())) 。。。。。。。 满足条件之后将该元素移除 idarray.removeat(n); length--; 大家看看这样做有没有问题,我对 acdbobjectidarray 不太了解 那位仁兄能给详细介绍一下 小弟 不胜感激! 逻辑错误,这样做是不对的.试试这样 for ( i = 0 ; i < idarray.length() ;) { if(pentity->iskindof(acdbarc::desc())) { pentity->erase(); pentity->close(); idarray.removeat(i); } else { i++; } } 而且这样做没有必要,一般用ads_sslength得到选择集的长度,直接循环 这个长度就行了,不用存到acdbobjectidarray. acdbobjectidarray 其实相当于 carray<acdbobjectid,acdbobjectid> |
所有的时间均为北京时间。 现在的时间是 01:16 AM. |