明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1346|回复: 2

求助怎么画类似内部空心的环形填充

[复制链接]
发表于 2014-12-16 09:13:30 | 显示全部楼层 |阅读模式
就是2个闭合多段线,1个包含另一个,然后做填充,内部的无填充,arx要怎么处理?

该贴已经同步到 山水夜雨的微博
发表于 2014-12-16 14:59:47 | 显示全部楼层
给你一段示例代码:
  1.         // - Algorithms._HHH command (do not rename)
  2.         static void Algorithms_TestHatch(void)
  3.         {
  4.                 int ret;
  5.                 ads_name sel,ent;
  6.                 resbuf filter;
  7.                 filter.restype = 0;
  8.                 filter.resval.rstring = _T("LWPOLYLINE,POLYLINE,CIRCLE,ELLIPSE");
  9.                 filter.rbnext = NULL;
  10.                 ret = acedSSGet(NULL,NULL,NULL,&filter,sel);
  11.                 if (ret == RTNORM)
  12.                 {
  13.                         long n;
  14.                         AcDbObjectId id;
  15.                         AcDbObjectIdArray ids;

  16.                         AcDbObjectPointer<AcDbHatch> hatch;
  17.                         hatch.create();
  18.                         hatch->setPatternScale(5);
  19.                         hatch->setPattern(AcDbHatch::kPreDefined,_T("ANSI31"));
  20.                         hatch->setHatchStyle(AcDbHatch::kNormal);

  21.                         acedSSLength(sel,&n);
  22.                         for (int i=0;i<n;i++)
  23.                         {
  24.                                 acedSSName(sel,i,ent);
  25.                                 acdbGetObjectId(id,ent);
  26.                                 ids.append(id);
  27.                                 hatch->appendLoop(AcDbHatch::kDefault,ids);
  28.                                 hatch->evaluateHatch();
  29.                                 ids.setLogicalLength(0);
  30.                         }
  31.                     //取消如下注释,以设置你的标高和法线之类以及填充关联(需要反应器)
  32.                         //hatch->setNormal(AcGeVector3d(0,0,1));   
  33.                         //hatch->setElevation(0);
  34.                         //hatch->setAssociative(false);
  35.                         AcDbBlockTableRecordPointer curSpace(acdbCurDwg()->currentSpaceId(),AcDb::kForWrite);
  36.                         Acad::ErrorStatus es = curSpace->appendAcDbEntity(hatch.object());
  37.                         if (es != Acad::eOk)
  38.                         {
  39.                                 acutPrintf(_T("\n创建填充失败!"));
  40.                         }
  41.                 }
  42.         }

      

发表于 2014-12-23 08:46:35 | 显示全部楼层
刚路过,见一回顶一回
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 06:40 , Processed in 0.168215 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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