天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 113|回复: 0

create hatch

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-5-24 20:15:27 | 显示全部楼层 |阅读模式
  1. void cmdHatch()
  2. {
  3.         ads采用name           sset = { 0,0 };
  4.         AcDbObjectIdArray outsideIds; // IDs of outer curve(s)/region
  5.         AcDbObjectIdArray holeIds;    // IDs of inner text(s)/pline(s)/region that shall create ONE hole.
  6.         acutPrintf(采用T("\nSelect entities that form the outer conture: "));
  7.         if (acedSSGet(NULL, NULL, NULL, NULL, sset) == RTNORM)
  8.         {
  9.                 outsideIds.setLogicalLength(0);
  10.                 Selset2ObjIdArray(sset, outsideIds);
  11.                 acedSSFree(sset);
  12.         }
  13.         else
  14.                 return;
  15.         Acad::ErrorStatus es;
  16.         AcDbDatabase* db = acdbHostApplicationServices()->workingDatabase();
  17.         AcDbHatch* hatch = new AcDbHatch();
  18.         hatch->setDatabaseDefaults(db);
  19.         es = hatch->appendLoop(AcDbHatch::kExternal, outsideIds);
  20.         int stat = RTNORM;
  21.         while (stat==RTNORM)
  22.         {
  23.                 acutPrintf(采用T("\nSelect entities that form one inner hole: "));
  24.                 stat = acedSSGet(NULL, NULL, NULL, NULL, sset);
  25.                 if (stat == RTNORM)
  26.                 {
  27.                         holeIds.setLogicalLength(0);
  28.                         Selset2ObjIdArray(sset, holeIds);
  29.                         acedSSFree(sset);
  30.                         es = hatch->appendLoop(AcDbHatch::kDefault, holeIds);
  31.                 }
  32.         }
  33.         hatch->evaluateHatch();
  34.         postToDb(db, hatch);
  35. }
  36. long Selset2ObjIdArray(ads采用name sset, AcDbObjectIdArray& objIdArr) {
  37.         Adesk::Int32 selSetLen = 0, i;
  38.         if (acedSSLength(sset, &selSetLen) != RTNORM)
  39.                 return -1;
  40.         ads采用name ename;
  41.         AcDbObjectId objId;
  42.         for (i = 0; i < selSetLen; i++)        {
  43.                 if (acedSSName(sset, i, ename) == RTNORM) {
  44.                         if (acdbGetObjectId(objId, ename) == Acad::eOk)
  45.                                 objIdArr.append(objId);
  46.                 }
  47.         }
  48.         return selSetLen;
  49. }
复制代码

 

 

 

 

create hatch
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-5 12:30 , Processed in 0.148213 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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