找回密码
 立即注册

QQ登录

只需一步,快速开始

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

ARX 多段线的合并

[复制链接]

1

主题

0

回帖

37

积分

管理员

积分
37
发表于 2024-5-2 22:41:18 | 显示全部楼层 |阅读模式
  1. 合成多段线
  2. static void AppendPLinePoint(const AcDbObjectId& id,const bool& gotoNext,AcDbPolyline* pLine,int& plIndex)
  3. {
  4. AcDbEntity* pEnt = NULL;
  5. Acad::ErrorStatus es = acdbOpenObject(pEnt,id,AcDb::OpenMode::kForRead);
  6. if(es != Acad::eOk)
  7. {
  8. acutPrintf(采用T("open object failed in combine pline"));
  9. return;
  10. }
  11. if(!pEnt->isKindOf(AcDbPolyline::desc()))
  12. {
  13. pEnt->close();
  14. return;
  15. }
  16. AcDbPolyline* pPoly = NULL;
  17. pPoly = (AcDbPolyline*)pEnt;
  18. AcGePoint2dArray ptArr;
  19. int count = pPoly->numVerts();
  20. AcGePoint2d pt ;
  21. double bulge = 0.0;
  22. if(gotoNext)
  23. {
  24. for(int i = 0;i < count ; i++)
  25. {
  26. pPoly->getPointAt(i,pt);
  27. pPoly->getBulgeAt(i,bulge);
  28. pLine->addVertexAt(plIndex,pt,bulge);
  29. plIndex++;
  30. }
  31. }
  32. else
  33. {
  34. for(int i = count - 1;i > 0; i--)
  35. {
  36. pPoly->getPointAt(i,pt);
  37. if(i > 0)
  38. {
  39. pPoly->getBulgeAt(i - 1,bulge);
  40. }
  41. else
  42. {
  43. pPoly->getBulgeAt(0,bulge);
  44. }
  45. pLine->addVertexAt(plIndex,pt,-bulge);
  46. plIndex++;
  47. }
  48. }
  49. pEnt->close();
  50. }
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-1-4 13:01 , Processed in 0.138939 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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