閱讀199 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 編程之美之2.7 最大公約數問題
  下一篇:go 專訪曾憲傑:大型網站係統與Java中間件實踐