找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1782|回复: 2

[曲线] 等分连线

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2020-5-13 17:52:20 | 显示全部楼层 |阅读模式
  • 插件名称 : 等分连线
  • 作  者 : Lispboy
  • 运行环境 :XDRX API 晓东工具箱 
  • 发布时间 :2020-05-13
  • 命令名称 :xdtb_divconnect
  • 插件介绍 :等分连线
  • 备  注 : (点击图片可以放大)
(点击图片可以放大)

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

插件详细内容

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

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

×
本帖最后由 newer 于 2020-5-13 19:25 编辑

有选项,对于多段线,可以按每个子段进行等分
全局等分4段和子段等分4段的区别

搜狗截图20200513192342.jpg
  1. (defun c:xdtb_divconnect (/ e1 e2 p1 p2 pts2 pts2 dis1 dis2)
  2.   (defun _pnts (pts tf)
  3.     (if        tf
  4.       (setq pts (reverse pts))
  5.     )
  6.     pts
  7.   )
  8.   (if (not #xd-var-global-divide)
  9.     (setq #xd-var-global-divide 4)
  10.   )
  11.   (if (setq
  12.         v (getint
  13.             (xdrx-prompt "\n输入等分数<" #xd-var-global-divide ">:" t)
  14.           )
  15.       )
  16.     (setq #xd-var-global-divide v)
  17.   )
  18.   (xdrx-initget "Y N")
  19.   (setq yno (xdrx-yesorno "\n是否多段线按段等分" 0))
  20.   (if (and (setq e1 (xdrx-entsel
  21.                       (xdrx-prompt
  22.                         "\n拾取第一条"
  23.                         (cond ((= yno 1) "多段线")
  24.                               (t "曲线")
  25.                         )
  26.                         "的一端<退出>:"
  27.                         t
  28.                       )
  29.                       (cond ((= yno 1) '((0 . "*polyline")))
  30.                             (t '((0 . "*line,arc")))
  31.                       )
  32.                     )
  33.            )
  34.            (setq p1 (cadr e1))
  35.            (setq e1 (car e1))
  36.            (setq e2 (xdrx-entsel
  37.                       (xdrx-prompt
  38.                         "\n拾取第二条"
  39.                         (cond ((= yno 1) "多段线")
  40.                               (t "曲线")
  41.                         )
  42.                         "对应的一端<退出>:"
  43.                         t
  44.                       )
  45.                       (cond ((= yno 1) '((0 . "*polyline")))
  46.                             (t '((0 . "*line,arc")))
  47.                       )
  48.                     )
  49.            )
  50.            (setq p2 (cadr e2))
  51.            (setq e2 (car e2))
  52.       )
  53.     (progn
  54.       (xdrx-begin)
  55.       (if (and (= yno 1)
  56.                (/= (length (xdrx-getpropertyvalue e1 "allsegs"))
  57.                    (length (xdrx-getpropertyvalue e2 "allsegs"))
  58.                )
  59.           )
  60.         (progn
  61.           (xdrx-prompt
  62.             "\n选择了多段线局部等分连线,但检测到两条曲线的子段数不同,不能操作,请核查."
  63.           )
  64.           (vl-exit-with-value 0)
  65.         )
  66.       )
  67.       (setq pts1 (xdrx-getpropertyvalue
  68.                    e1
  69.                    "divide"
  70.                    #xd-var-global-divide
  71.                    (cond ((= yno 1) t)
  72.                          (t nil)
  73.                    )
  74.                  )
  75.             pts1 (xd::list:flat-point pts1)
  76.             pts2 (xdrx-getpropertyvalue
  77.                    e2
  78.                    "divide"
  79.                    #xd-var-global-divide
  80.                    (cond ((= yno 1) t)
  81.                          (t nil)
  82.                    )
  83.                  )
  84.             pts2 (xd::list:flat-point pts2)
  85.             dis1 (xdrx-curve-getdistatpoint e1 p1)
  86.             dis2 (- (xdrx-getpropertyvalue e1 "length") dis1)
  87.             pts1 (_pnts pts1 (> dis1 dis2))
  88.             dis1 (xdrx-curve-getdistatpoint e2 p2)
  89.             dis2 (- (xdrx-getpropertyvalue e2 "length") dis1)
  90.             pts2 (_pnts pts2 (> dis1 dis2))
  91.       )
  92.       (mapcar '(lambda (x)
  93.                  (xdrx-line-make x)
  94.                  (xdrx-entity-setpropertiesfrom (entlast) e1)
  95.                )
  96.               (mapcar '(lambda (x y) (list x y)) pts1 pts2)
  97.       )
  98.       (xdrx-end)
  99.     )
  100.   )
  101.   (princ)
  102. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2020-5-14 12:21:13 | 显示全部楼层
感谢楼主分享 收藏了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 9个

财富等级: 恭喜发财

发表于 2020-8-3 20:09:18 | 显示全部楼层
感谢楼主分享 收藏了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 16:46 , Processed in 0.371577 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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