void Additional_Class::SetCurLayler( AcDbObjectId curlayerID) { AcDbDatabase *pCurDb = NULL; pCurDb = acdbHostApplicationServices()->workingDatabase(); pCurDb->setClayer(curlayerID); return; }
void Additional_Class::SetCurLayler( CString LaylerName ) { AcDbDatabase *pCurDb = NULL; pCurDb = acdbHostApplicationServices()->workingDatabase(); /*pCurDb->setClayer()*/ int n = 0;//判断是否找到图层 ////////////////////////////////////////////////////////////////////////// AcDbLayerTable *pLayerTbl; acdbHostApplicationServices()->workingDatabase() ->getSymbolTable(pLayerTbl, AcDb::kForWrite); // 建立图层遍历器 AcDbLayerTableIterator *pLayerIterator; pLayerTbl->newIterator(pLayerIterator); // AcDbLayerTableRecord *pLayerTableRcd; ACHAR *pLtName; ACHAR *pLtNameTT; CString pLtNameStr; for (; !pLayerIterator->done(); pLayerIterator->step()) { pLayerIterator->getRecord(pLayerTableRcd, AcDb::kForWrite); pLayerTableRcd->getName(pLtName); pLayerTableRcd->close(); pLtNameStr = pLtName; if (pLtNameStr == LaylerName) { pCurDb->setClayer(pLayerTableRcd->id()); free(pLtName); n = 1;//如果图层找到,则将n赋值为1 delete pLayerIterator; pLayerTbl->close(); return; } else { free(pLtName); } } if (n == 0) { // 新建图层 AcDbLayerTableRecord *pLayerTableRecordTT = new AcDbLayerTableRecord; pLayerTableRecordTT->setName(LaylerName); AcDbObjectId pLayerId; pLayerTbl->add(pLayerId, pLayerTableRecordTT); pLayerTableRecordTT->getName(pLtNameTT); pLayerTableRecordTT->close(); //struct resbuf pResult; //::acedGetVar(_T("CLAYER"),&pResult);//取得当前图层 //char *p = (LPSTR)(LPCTSTR)LaylerName; //pResult.resval.rstring = pLtNameTT; //int s=acedSetVar(_T("CLAYER"), &pResult);//将输入的图层设为当前层 //相当于命令 CLAYER LAYERNAME //acutPrintf(_T("\nLinetype name is: %s"), pResult.resval.rstring); //acutPrintf(_T("\nLinetype name is: %d"), s); n = 1;//如果图层找到,则将n赋值为1 delete pLayerIterator; pLayerTbl->close(); struct resbuf pResults; ::acedGetVar(_T("CLAYER"),&pResults);//取得当前图层 //pLtNameTT = "0"; pResults.resval.rstring = pLtNameTT; ::acedSetVar(_T("CLAYER"), &pResults);//将输入的图层设为当前层 free(pLtNameTT); } // acutPrintf(_T("\nLinetype name")); // acutPrintf(_T("\nLinetype name is: %s"), pResult.resval.rstring); }