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