设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1327|回复: 0

[曲线] 折线转圆(弧)

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-6-11 15:37:09 | 显示全部楼层 |阅读模式
  • 插件名称 : 折线转弧
  • 作  者 : Newer
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2016-06-11
  • 命令名称 :XDTB_JX2ARC
  • 插件介绍 :折线转圆(弧)
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

晓东温馨提示 1、运行环境为 晓东工具箱XDRX API 的插件,请下载最新版本的 晓东工具箱XDRX API开发环境 一键安装
2、在ACAD中如何加载插件,请看 论坛插件使用方法
3、如果您有要求需要定制插件,请到 编程申请 论坛发帖求助

插件详细内容

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

x
本帖最后由 newer 于 2016-6-11 15:39 编辑

最小二乘圆拟合函数见 xd::pnts:fitcircle
[sell=2]
  1. (defun c:XDTB_JX2ARC ( / cen d ean g num pts r san ss temp x)
  2.   (if (and
  3.         (xdrx_prompt "\n选取要转圆弧的折线<退出>:" t)
  4.         (setq ss (ssget '((0 . "*polyline"))))
  5.       )
  6.     (progn
  7.       (setq num 0)
  8.       (mapcar
  9.         '(lambda (x)
  10.            (xdrx_polyline_convertfrom x)
  11.            (setq pts (xdrx_getpropertyvalue x "vertices"))
  12.            (if (and
  13.                  (xdrx_polyline_isonlylines x)
  14.                  (> (length pts) 2)
  15.                )
  16.              (progn
  17.                (setq d (xd::pnts:fitcircle pts))
  18.                (if d
  19.                  (progn
  20.                    (setq cen (car d)
  21.                          r (cadr d)
  22.                          g (xdge::constructor "kCircArc3d" (car d) '
  23.                                               (0 0 1.0) (cadr d)
  24.                            )
  25.                    )
  26.                    (if (not (xdrx_curve_isclosed x))
  27.                      (progn
  28.                        (setq san (angle cen (car pts))
  29.                              ean (angle cen (last pts))
  30.                        )
  31.                        (if (XD::Pnts:isClockWise pts)
  32.                          (setq temp san
  33.                                san ean
  34.                                ean temp
  35.                          )
  36.                        )
  37.                        (xdge::setpropertyvalue g "setangles" san ean)
  38.                      )
  39.                    )
  40.                    (xdge::entity:make g)
  41.                    (xdrx_object_swapid x (entlast))
  42.                    (xdrx_entity_delete (entlast))
  43.                    (setq num (1+ num))
  44.                    (xdge::free g)
  45.                  )
  46.                )
  47.              )
  48.            )
  49.          )
  50.         (xdrx_pickset->ents ss)
  51.       )
  52.       (xdrx_prompt "\n选取了" (sslength ss) "个折线,转换成功了" num
  53.                    "个到圆弧."
  54.       )
  55.     )
  56.   )
  57.   (princ)
  58. )
[/sell]


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

GMT+8, 2021-9-23 00:34 , Processed in 0.799790 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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