获取图层的控制需要得到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的用法,记得用完删除! |