阅读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中间件实践