CAD工具之家's Archivers

From boitboy on 2013-07-09 21:49:40

枚举CAD图层

//枚举图层 Acad::ErrorStatus EnumAllLayer(AcDbObjectIdArray& layeIds,AcDbDatabase* pDb=acdbHostApplicationServices()->workingDatabase()) {  if(pDb==NULL)   return Acad::eNullPtr;  AcDbLayerTable *pLayerTable=NULL;  Acad::ErrorStatus es=Acad::eOk;  if((es=pDb->getSymbolTable(pLayerTable,AcDb::kForRead))!=Acad::eOk)  {   pLayerTable->close();   return es;  }  //创建一个层表迭代器  AcDbLayerTableIterator *pLayerTableIterator;  if ( (es =pLayerTable->newIterator (pLayerTableIterator) ) != Acad::eOk )  {   pLayerTable->close () ;   return es;  }  //取得图层  for(pLayerTableIterator->start ();!pLayerTableIterator->done();pLayerTableIterator->step())  {   AcDbObjectId id;   es=pLayerTableIterator->getRecordId(id);   if(es!=Acad::eOk)    continue;   layeIds.append(id);  }  //删除层表迭代器  delete pLayerTableIterator;  pLayerTableIterator=NULL;  //关闭层表(切记)  pLayerTable->close () ;  return Acad::eOk; } //枚举图层 Acad::ErrorStatus EnumAllLayer(CStringArray& layeNames,AcDbDatabase* pDb=acdbHostApplicationServices()->workingDatabase()) {  if(pDb==NULL)   return Acad::eNullPtr;  AcDbLayerTable *pLayerTable=NULL;  Acad::ErrorStatus es=Acad::eOk;  if((es=pDb->getSymbolTable(pLayerTable,AcDb::kForRead))!=Acad::eOk)  {   pLayerTable->close();   return es;  }  //创建一个层表迭代器  AcDbLayerTableIterator *pLayerTableIterator;  if ( (es =pLayerTable->newIterator (pLayerTableIterator) ) != Acad::eOk )  {   pLayerTable->close () ;   return es;  }  //取得图层  for(pLayerTableIterator->start ();!pLayerTableIterator->done();pLayerTableIterator->step())  {   AcDbLayerTableRecord *pLayerTableRecord=NULL;   es=pLayerTableIterator->getRecord(pLayerTableRecord,AcDb::kForRead);   if(es!=Acad::eOk)    continue;   const ACHAR* pName=NULL;   es=pLayerTableRecord->getName(pName);   if(es!=Acad::eOk)   {    pLayerTableRecord->close();    continue;   }   CString strName=pName;   layeNames.Add(strName);   //关闭(切记)   pLayerTableRecord->close();  }  //删除层表迭代器  delete pLayerTableIterator;  pLayerTableIterator=NULL;  //关闭层表(切记)  pLayerTable->close () ;  return Acad::eOk; }

查看完整版本: 枚举CAD图层

Tags:


©CAD工具之家
创办于:2013年5月24日