HATCH命令:填充数组
填充前:填充后:
app
填充对象的步骤:函数
(1)建立一个空的填充对象。
(2)指定填充对象所在的平面。
(3)设置填充对象的关联性;
(4)指定填充图案;
(5)添加填充边界;
(6)显示填充对象;
(7)将其添加到模型空间;
(8)若是是关联性的填充,将填充对象与边界绑定。oop
须要头文件#include " dbhatch.h "lua
void ZffCHAP2AddHatch() { // 提示用户选择填充边界 ads_name ss; int rt = acedSSGet(NULL, NULL, NULL, NULL, ss); AcDbObjectIdArray objIds; // 初始化填充边界的ID数组 if (rt == RTNORM) { long length; acedSSLength(ss, &length); for (int i = 0; i < length; i++) { ads_name ent; acedSSName(ss, i, ent); AcDbObjectId objId; acdbGetObjectId(objId, ent); objIds.append(objId); } } acedSSFree(ss); // 释放选择集 CCreateEnt::CreateHatch(objIds, "SOLID", true); } AcDbObjectId CCreateEnt::CreateHatch(AcDbObjectIdArray objIds,const char* patName, bool bAssociative) { Acad::ErrorStatus es; AcDbHatch *pHatch = new AcDbHatch(); // 设置填充平面 AcGeVector3d normal(0, 0, 1); pHatch->setNormal(normal); pHatch->setElevation(0); // 设置关联性 pHatch->setAssociative(bAssociative); // 设置填充图案 pHatch->setPattern(AcDbHatch::kPreDefined, patName); // 添加填充边界 es = pHatch->appendLoop(AcDbHatch::kExternal, objIds); // 显示填充对象 es = pHatch->evaluateHatch(); // 添加到模型空间 AcDbObjectId hatchId; hatchId = CCreateEnt::PostToModelSpace(pHatch); // 若是是关联性的填充,将填充对象与边界绑定,以便使其能得到边界对象修改的通知 if (bAssociative) { AcDbEntity *pEnt; for (int i = 0; i < objIds.length(); i++) { es = acdbOpenAcDbEntity(pEnt, objIds[i],AcDb::kForWrite); if (es == Acad::eOk) { // 添加一个永久反应器 pEnt->addPersistentReactor(hatchId); pEnt->close(); } } } return hatchId; }
appendLoop函数定义为:3d
Acad::ErrorStatus appendLoop(Adesk::Int32 loopType,const AcDbObjectIdArray& dbObjIds);
第一个参数:边界类型;第二个参数:边界实体的id数组code