天气与日历 切换到窄版

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

合并各种情况的圆弧

[复制链接]
  • TA的每日心情
    开心
    前天 08:01
  • 签到天数: 82 天

    [LV.6]常住居民II

    1585

    主题

    204

    回帖

    214748万

    积分

    管理员

    积分
    2147483647
    发表于 2024-5-4 18:45:39 | 显示全部楼层 |阅读模式
    1. static void zffObjectARX_MyCommand18(void)
    2. {
    3. ads_name ss;
    4. acedSSGet(NULL,NULL,NULL,NULL,ss);
    5. long len;
    6. acedSSLength(ss,&len);
    7. double startAng,endAng;
    8. double radius;
    9. AcGePoint3d center;

    10. for (int i=0;i<len;)
    11. {
    12. AcDbArc* pArc=NULL;
    13. AcDbObjectId entId;
    14. ads_name name,name1;
    15. acedSSName(ss,i,name);
    16. acdbGetObjectId(entId,name);
    17. acdbOpenObject(pArc,entId,AcDb::kForWrite);
    18. double arcStartAng=pArc->startAngle();
    19. double arcEndAng=pArc->endAngle();
    20. if (arcEndAng==0)
    21. {
    22. arcEndAng+=2*pi();
    23. }
    24. AcGePoint3d arcCenter=pArc->center();
    25. double arcRadius=pArc->radius();
    26. radius=arcRadius;
    27. center=arcCenter;
    28. startAng=arcStartAng;
    29. endAng=arcEndAng;

    30. for (int j=i+1;j<len;)
    31. {
    32. AcDbArc* pArc1=NULL;
    33. acedSSName(ss,j,name1);
    34. acdbGetObjectId(entId,name1);
    35. acdbOpenObject(pArc1,entId,AcDb::kForWrite);
    36. double arc1StartAng=pArc1->startAngle();
    37. double arc1EndAng=pArc1->endAngle();
    38. if (arc1EndAng==0)
    39. {
    40. arc1EndAng+=2*pi();
    41. }
    42. AcGePoint3d arc1Center=pArc1->center();
    43. double arc1Radius=pArc1->radius();
    44. if (arcCenter==arc1Center && arcRadius==arc1Radius)
    45. {
    46. if (arc1StartAng<startAng)
    47. {
    48. startAng=arc1StartAng;
    49. }
    50. if (arc1EndAng>endAng)
    51. {
    52. endAng=arc1EndAng;
    53. }
    54. acedSSDel(name1,ss);
    55. pArc1->erase();
    56. acedSSLength(ss,&len);
    57. }
    58. else
    59. {
    60. j++;
    61. }
    62. pArc1->close();
    63. }
    64. acedSSDel(name,ss);
    65. pArc->erase();
    66. pArc->close();
    67. acedSSLength(ss,&len);
    68. AcDbArc* pArcRe=new AcDbArc(center,radius,startAng,endAng);
    69. AddToModelSpace(pArcRe);
    70. }
    71. }
    复制代码

     

     

     

     

    合并各种情况的圆弧
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-5-18 17:03 , Processed in 0.058473 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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