乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 63|回复: 4

多段线换方向

[复制链接]

1

主题

1

帖子

1

银币

初来乍到

Rank: 1

铜币
5
发表于 2015-8-23 07:44:00 | 显示全部楼层 |阅读模式
昨天看了有人用LISP写了一个多段线换向的程序,现在我也写了一个,时间仓促,请大家多多指教。第一次发帖
  1. void PostToModelSpace(AcDbEntity *pEnt)
  2. {
  3.   AcDbBlockTable *pBlkTbl;
  4.   acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlkTbl,AcDb::kForRead);
  5.   AcDbBlockTableRecord *pBlkTblRcd;
  6.   pBlkTbl->getAt(ACDB_MODEL_SPACE,pBlkTblRcd,AcDb::kForWrite);
  7.   pBlkTbl->close();
  8.   AcDbObjectId entId;
  9.   pBlkTblRcd->appendAcDbEntity(entId,pEnt);
  10.   pEnt->close();
  11.   pBlkTblRcd->close();
  12. }
  1. static void XsdkArxProject3HUAN(void)
  2.   {
  3.     // Add your code for command XsdkArxProject3.HUAN here
  4.     ads_name ss,s1;
  5.     struct resbuf *rb = acutBuildList(RTDXF0,L"LWPOLYLINE",RTNONE);
  6.     if (acedSSGet(NULL,NULL,NULL,rb,ss)!=RTNORM)
  7.     {
  8.       return;
  9.     }
  10.         long len;
  11.     if (RTNORM==acedSSLength(ss,&len))
  12.     {
  13.       for (int i = 0; i numVerts(); j++)
  14.         {
  15.           AcGePoint2d p2d; pPline->getPointAt(j,p2d);
  16.           ptArray.append(p2d);
  17.         }
  18.         ptArray = ptArray.reverse();
  19.         AcDbPolyline *pNewPoly = new AcDbPolyline(ptArray.length());
  20.         for (int k = 0; k addVertexAt(k,p2d1);
  21.         }
  22.         pNewPoly->setPropertiesFrom(pPline);
  23.         pNewPoly->setXData(pPline->xData());
  24.                 PostToModelSpace(pNewPoly);
  25.                 pPline->erase();
  26.         pPline->close();
  27.       }
  28.     }
  29.     acedSSFree(ss);
  30.     acutRelRb(rb);
  31.   }

回复

使用道具 举报

6

主题

33

帖子

5

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
57
发表于 2015-8-23 12:47:00 | 显示全部楼层
兄弟 你帖子发错地方了 这里是ObjectARX板块
回复

使用道具 举报

1

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
13
发表于 2015-8-29 21:28:00 | 显示全部楼层
我记得AcdbPolyline中有一个函数是可以直接获得线上所有点的,还有可以不新建一个多线,可以先获得多线段所有的点,然后把点集顺序颠倒,然后可以在原线上用setPointAt(int,Acgepoint2d)直接反向,这样是不是能更优化点呢?
回复

使用道具 举报

0

主题

275

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
275
发表于 2016-1-8 18:59:00 | 显示全部楼层
Curve::reverse();
回复

使用道具 举报

0

主题

87

帖子

9

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
87
发表于 2016-11-1 16:41:00 | 显示全部楼层
不错的程序,谢楼主分享啊。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 15:57 , Processed in 0.202849 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表