找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 128|回复: 0

[每日一码] 创建HATCH并设置比例

[复制链接]

0

主题

0

回帖

28

积分

管理员

积分
28
发表于 2024-3-14 19:37:42 | 显示全部楼层 |阅读模式
  1. #define AOK(es) if(es != Acad::eOk) throw es;
  2. void createHatch(void)
  3. {         
  4.             AcDbObjectId objId;
  5.             AcDbEntity* pEnt;
  6.             ads采用name ent;
  7.             ads采用point point;
  8.             if (RTNORM != acedEntSel("SELECT AN ENTITY TO BE HATCHED: ", ent,
  9. point))
  10.                         return;
  11.             assert(objId.setFromOldId(ent[0]));
  12.             AOK( acdbOpenObject(pEnt,objId,AcDb::kForRead) );
  13.             AcDbHatch *pHatch = new AcDbHatch;
  14.             assert(pHatch);
  15.             try
  16.             {
  17.                         AcDbBlockTableRecordPointer pBtr(ACDB采用MODEL采用SPACE,
  18. curDoc()->database(), AcDb::kForWrite);
  19.                         AOK(pBtr.openStatus());
  20.                         AOK(pHatch->setPatternAngle(0));
  21.                         AOK(pHatch->setPatternScale(10));
  22.                         AOK(pHatch->setAssociative(Adesk::kFalse));
  23.                         AOK(pHatch->setPattern(AcDbHatch::kPreDefined, "ANSI32"));
  24.                         // append loop to hatch
  25.                         AcDbObjectIdArray dbObjIds;
  26.                         int objNum = dbObjIds.append(pEnt->objectId());
  27.                         acutPrintf("\nOBJ number is %d.", objNum);
  28.                         AOK(pHatch->appendLoop(AcDbHatch::kExternal, dbObjIds));
  29.                         AOK(pHatch->setLayer(pEnt->layer()));
  30.                         AOK(pHatch->setColorIndex(256));     //bylayer
  31.                         AOK(pHatch->setHatchStyle(AcDbHatch::kNormal));
  32.                         AOK(pHatch->evaluateHatch());
  33.                         AOK(pBtr->appendAcDbEntity(pHatch));
  34.                         AOK(pHatch->close());
  35.             }
  36.             catch (const Acad::ErrorStatus es)
  37.             {
  38.                         acutPrintf("Error: %s", acadErrorStatusText(es));
  39.                         delete pHatch;
  40.             }
  41. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-29 05:14 , Processed in 0.110298 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表