ObjectArx學習筆記-畫線並修改顏色改進寫法
1、創建工程CreateEnts
2、添加類CCreateEnt,在文件CreateEnt.h中添加函數聲明,在CreateEnt.cpp添加函數實現代碼:
static AcDbObjectId CreateLine();
AcDbObjectId CCreateEnt::CreateLine() { AcGePoint3d ptStart(0,0,0); AcGePoint3d ptEnd(100,100,0); AcDbLine *pLine = new AcDbLine(ptStart, ptEnd); AcDbBlockTable *pBlockTable; acdbHostApplicationServices()->workingDatabase() ->getBlockTable(pBlockTable,AcDb::kForRead); AcDbBlockTableRecord *pBlockTableRocord; pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRocord, AcDb::kForWrite); AcDbObjectId lineId; pBlockTableRocord -> appendAcDbEntity(lineId, pLine); pBlockTable -> close(); pBlockTableRocord -> close(); pLine -> close(); return lineId; }
3、添加類CModifyEnt,在文件CModifyEnt.h中添加函數聲明,在CModifyEnt.cpp添加函數實現代碼:
static Acad::ErrorStatus ChangeColor(AcDbObjectId entId, Adesk::UInt16 colorIndex);
Acad::ErrorStatus CModifyEnt::ChangeColor(AcDbObjectId entId, Adesk::UInt16 colorIndex) { AcDbEntity *pEntity; //打開圖像數據庫中的對象 acdbOpenObject(pEntity, entId,AcDb::kForWrite); //修改實體顏色 pEntity->setColorIndex(colorIndex); pEntity->close(); return Acad::eOk; }
4、在ObjectARX中注冊新命令_ChangColor。首先應用之前的兩個頭文件,最後添加命令的實現代碼:
#include "CreateEnt.h" #include "ModifyEnt.h"
// - qxzyCreateEnts._ChangeColor command (do not rename) static void qxzyCreateEnts_ChangeColor(void) { // Add your code for command qxzyCreateEnts._ChangeColor here AcDbObjectId lineId; lineId = CCreateEnt::CreateLine(); CModifyEnt::ChangeColor(lineId, 1); }
最後編譯
最後更新:2017-04-03 08:26:12