ObjectArx学习笔记-获取某一图层上所有直线

来源:互联网 发布:html js报错 编辑:程序博客网 时间:2024/06/03 16:52
//-----------------------------------------------------------------------------//----- acrxEntryPoint.h//-----------------------------------------------------------------------------#include "StdAfx.h"#include "resource.h"#include "dbsymtb.h"//-----------------------------------------------------------------------------#define szRDS _RXST("qxzy")//-----------------------------------------------------------------------------//----- ObjectARX EntryPointclass CGetEntsOnLayerApp : public AcRxArxApp {public:CGetEntsOnLayerApp () : AcRxArxApp () {}virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {// TODO: Load dependencies here// You *must* call On_kInitAppMsg hereAcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;// TODO: Add your initialization code herereturn (retCode) ;}virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {// TODO: Add your code here// You *must* call On_kUnloadAppMsg hereAcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;// TODO: Unload dependencies herereturn (retCode) ;}virtual void RegisterServerComponents () {}public:// - qxzyGetEntsOnLayer._GetEntsOnLayer command (do not rename)static void qxzyGetEntsOnLayer_GetEntsOnLayer(void){// Add your code for command qxzyGetEntsOnLayer._GetEntsOnLayer hereAcDbLayerTable *pLayerTbl;acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pLayerTbl,AcDb::kForRead);if(!pLayerTbl->has(_T("测试"))){acutPrintf(_T("\n当前图形中未包含\"测试\"图层!"));pLayerTbl->close();return;}AcDbObjectId layerId;pLayerTbl->getAt(_T("测试"),layerId);pLayerTbl->close();AcDbBlockTable *pBlkTbl;acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl, AcDb::kForRead);AcDbBlockTableRecord *pBlkTblRcd;pBlkTbl->getAt(ACDB_MODEL_SPACE, pBlkTblRcd, AcDb::kForRead);pBlkTbl->close();AcDbBlockTableRecordIterator *pltr;pBlkTblRcd->newIterator(pltr);AcDbEntity *pEnt;for(pltr->start();!pltr->done();pltr->step()){pltr->getEntity(pEnt, AcDb::kForWrite);if(pEnt->layerId() == layerId){//whether it's a lineAcDbLine *pLine = AcDbLine::cast(pEnt);if(pLine != NULL);{pLine->setColorIndex(1);}}pEnt->close();}delete pltr;pBlkTblRcd->close();}} ;//-----------------------------------------------------------------------------IMPLEMENT_ARX_ENTRYPOINT(CGetEntsOnLayerApp)ACED_ARXCOMMAND_ENTRY_AUTO(CGetEntsOnLayerApp, qxzyGetEntsOnLayer, _GetEntsOnLayer, GetEntsOnLayer, ACRX_CMD_TRANSPARENT, NULL)

0 0
原创粉丝点击