找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 576|回复: 9

[已解决] (已解决)求一个连接多直线端点的插件

[复制链接]

已领礼包: 7个

财富等级: 恭喜发财

发表于 2020-5-12 06:20:09 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 bszzl167 于 2020-5-13 08:18 编辑

RT,类似gif的插件 直线端点连接.gif


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

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-5-12 21:25:33 | 显示全部楼层
本帖最后由 newer 于 2020-5-12 22:53 编辑



  1. (defun c:tt ()  (if (not #xd-var-global-left-right)
  2.     (setq #xd-var-global-left-right 0)
  3.   )
  4.   (xdrx-initget "0 1")
  5.   (if (setq v (getint (xdrx-prompt
  6.                         "\n连接端[左下:0/右上:1]<"
  7.                         #xd-var-global-left-right
  8.                         ">:"
  9.                         t
  10.                       )
  11.               )
  12.       )
  13.     (setq #xd-var-global-left-right v)
  14.   )
  15.   (xdrx-begin)
  16.   (while (and (xdrx-initssget "\n选择要连接端点的曲线<退出>:")
  17.               (setq ss (xdrx-ssget '((0 . "line"))))
  18.          )
  19.     (setq pts
  20.            (mapcar '(lambda (x)
  21.                       (setq ln (xdrx-getpropertyvalue x "vertices"))
  22.                       (cond ((= #xd-var-global-left-right 0)
  23.                              (if (or (< (car (cadr ln)) (car (car ln)))
  24.                                      (< (cadr (cadr ln)) (cadr (car ln)))
  25.                                  )
  26.                                (reverse ln)
  27.                                ln
  28.                              )
  29.                             )
  30.                             ((= #xd-var-global-left-right 1)
  31.                              (if (or (> (car (cadr ln)) (car (car ln)))
  32.                                      (> (cadr (cadr ln)) (cadr (car ln)))
  33.                                  )
  34.                                (reverse ln)
  35.                                ln
  36.                              )
  37.                             )
  38.                             (t ln)
  39.                       )
  40.                     )
  41.                    (xdrx-pickset->ents ss)
  42.            )
  43.     )
  44.     (xdrx-polyline-make
  45.       (cond ((= #xd-var-global-left-right 0)
  46.              (vl-sort (mapcar 'car pts)
  47.                       '(lambda (x y) (< (car x) (car y)))
  48.              )
  49.             )
  50.             ((= #xd-var-global-left-right 1)
  51.              (vl-sort (mapcar 'car pts)
  52.                       '(lambda (x y) (< (cadr x) (cadr y)))
  53.              )
  54.             )
  55.       )
  56.     )
  57.     (xdrx-setpropertyvalue (entlast) (ssname ss 0))
  58.   )
  59.   (xdrx-end)
  60.   (princ)
  61. )


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

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

 楼主| 发表于 2020-5-12 23:38:31 | 显示全部楼层
感谢斑竹,基本按这个思路处理好了。但有一个问题:一端平齐时,另一端无法连接。见图 tt.png

点评

只有水平和垂直?  详情 回复 发表于 2020-5-12 23:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-5-12 23:46:20 | 显示全部楼层
bszzl167 发表于 2020-5-12 23:38
感谢斑竹,基本按这个思路处理好了。但有一个问题:一端平齐时,另一端无法连接。见图

1、平行线?

2、只有水平和垂直?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

 楼主| 发表于 2020-5-12 23:55:11 | 显示全部楼层
1、平行线

2、只有水平和垂直

点评

来个通用的,任意角度平行线,批量的 [attachimg]100517[/attachimg]  详情 回复 发表于 2020-5-13 03:06
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-5-13 03:06:20 | 显示全部楼层
bszzl167 发表于 2020-5-12 23:55
1、平行线

2、只有水平和垂直

来个通用的,任意角度平行线,批量的

批量端点连线.gif

  1. (defun c:tt ()
  2.   (defun _mkpline (pts)
  3.     (setq g (xdge::constructor "kcompositecrv3d" pts))
  4.     (xdrx-entity-make g)
  5.     (xdge::free g)
  6.   )
  7.   (if (not #xd-var-global-left-right)
  8.     (setq #xd-var-global-left-right 0)
  9.   )
  10.   (xdrx-begin)
  11.   (xdrx-initget "0 1")
  12.   (if (setq v (getint (xdrx-prompt
  13.                         "\n连接端[左下:0/右上:1]<"
  14.                         #xd-var-global-left-right
  15.                         ">:"
  16.                         t
  17.                       )
  18.               )
  19.       )
  20.     (setq #xd-var-global-left-right v)
  21.   )
  22.   (xdrx-begin)
  23.   (while (and (xdrx-initssget "\n选择要连接端点的曲线<退出>:")
  24.               (setq ss (xdrx-ssget '((0 . "line"))))
  25.          )
  26.     (setq lst (xd::list:groupbyindex
  27.                 (mapcar        '(lambda (x)
  28.                            (setq ln (xdrx-getpropertyvalue x "vertices")
  29.                                  an (xdrx-getpropertyvalue x "angle")
  30.                                  an (xd::geom:angleformat an)
  31.                            )
  32.                            (list an x)
  33.                          )
  34.                         (xdrx-pickset->ents ss)
  35.                 )
  36.                 0.001
  37.               )
  38.     )
  39.     (setq
  40.       lst (mapcar '(lambda (x)
  41.                      (setq ents        (cdr x)
  42.                            xdir        (xdrx-vector-normalize
  43.                                   (mapcar '-
  44.                                           (polar '(0 0 0) (car x) 1.0)
  45.                                           '(0 0 0)
  46.                                   )
  47.                                 )
  48.                      )
  49.                      (setq box (xdrx-entity-box ents xdir))
  50.                      (setq ents1 (mapcar '(lambda (y)
  51.                                             (setq p1  (xdrx-getpropertyvalue y "startpoint")
  52.                                                   dis (abs (xdrx-point-dist2line
  53.                                                              p1
  54.                                                              (car box)
  55.                                                              (cadr box)
  56.                                                            )
  57.                                                       )
  58.                                             )
  59.                                             (list dis y)
  60.                                           )
  61.                                          ents
  62.                                  )
  63.                      )
  64.                      (setq
  65.                        ents2 (vl-sort ents1
  66.                                       '(lambda (x y) (< (car x) (car y)))
  67.                              )
  68.                      )
  69.                      (mapcar 'cadr ents2)
  70.                    )
  71.                   lst
  72.           )
  73.     )
  74.     (setq lst (mapcar '(lambda (x)
  75.                          (mapcar '(lambda (y)
  76.                                     (setq ln (xdrx-getpropertyvalue y "vertices")
  77.                                           an (xdrx-getpropertyvalue y "angle")
  78.                                           an (xd::geom:angleformat an)
  79.                                     )
  80.                                     (if        (> an (/ pi 2))
  81.                                       (reverse ln)
  82.                                       ln
  83.                                     )
  84.                                   )
  85.                                  x
  86.                          )
  87.                        )
  88.                       lst
  89.               )
  90.     )
  91.     (mapcar
  92.       '(lambda (x)
  93.          (cond
  94.            ((= #xd-var-global-left-right 0) (_mkpline (mapcar 'car x)))
  95.            (t (_mkpline (mapcar 'cadr x)))
  96.          )
  97.          (xdrx-setpropertyvalue (entlast) "color" 6)
  98.        )
  99.       lst
  100.     )
  101.   )
  102.   (xdrx-end)
  103.   (princ)
  104. )


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

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

 楼主| 发表于 2020-5-13 08:14:39 | 显示全部楼层
newer 发表于 2020-5-13 03:06
来个通用的,任意角度平行线,批量的

真心好用,感谢斑竹!!!!!!!!!!

点评

去看看 http://bbs.xdcad.net/thread-725816-1-1.html 修改了,可以有两端都封闭的选择  详情 回复 发表于 2020-5-13 19:37
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-5-13 19:37:55 | 显示全部楼层
bszzl167 发表于 2020-5-13 08:14
真心好用,感谢斑竹!!!!!!!!!!

你这个是什么专业的,画什么用的?

去看看 http://bbs.xdcad.net/thread-725816-1-1.html

修改了,可以有两端都封闭的选择
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7个

财富等级: 恭喜发财

 楼主| 发表于 2020-5-16 06:14:34 | 显示全部楼层
newer 发表于 2020-5-13 19:37
你这个是什么专业的,画什么用的?

去看看 http://bbs.xdcad.net/thread-725816-1-1.html

现在才看到,谢谢斑竹!回斑竹:用在公路边坡坡头展点的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-28 21:08 , Processed in 0.181978 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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