天气与日历 切换到窄版

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

ObjectARX 合并各种情况的圆弧

[复制链接]
  • TA的每日心情
    开心
    昨天 06:36
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    105

    主题

    11

    回帖

    1308

    积分

    管理员

    积分
    1308
    QQ
    发表于 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. }
    复制代码

     

     

     

     

    ObjectARX 合并各种情况的圆弧

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

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

    本版积分规则

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

    GMT+8, 2024-11-1 10:38 , Processed in 0.139777 second(s), 29 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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