|
发表于 2006-8-7 19:21:00
|
显示全部楼层
获取图层的控制需要得到Layer Table,遍历里面的layer需要iterator
AcDbLayerTable *lt;
AcDbLayerTableIterator *it;
acdbHostApplicationServices()->workingDatabase()->getLayerTable(lt,AcDb::kForRead);//取得layer table
lt->newIterator(it);//建立一个iterator
for(;!it->done();it->step())//it->done()是结束判断,it->step()是遍历下一个,类似于链表或线形表
{
AcDbLayerTableRecord *ltr;
it->getRecord(ltr,AcDb::kForRead);//通过it可以得到record
char* text;
ltr->getName(text);得到名字,注意这段内存是不可以动的,这个东西就赤裸的指向系统内部的那个存储图层名的地方
ltr->close();//record必须关闭!
acutPrintf("%s",text);
}
delete it;//it必须用这个方式删除
lt->close();//lt必须关闭
注意iterator的用法,就如同STL的iterator的用法,记得用完删除!
|
|