找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2408|回复: 11

[已解决] 【已解决】多段线的顶点连线

[复制链接]
发表于 2013-10-31 20:48:33 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 newer 于 2020-4-28 22:02 编辑

这个个lisp程序只能单选,希望老大们能帮我改成框选,先谢了。
程序如下:
  1. defun c:pxlj(/ e1 e2 vla_e1 vla_e2 pts1 pts2 fglst lst_dist&p)
  2.   (setq e1(car(entsel"\n 选择第一条曲线:"))
  3.   e2(car(entsel"\n 选择第二条曲线:"))
  4.   vla_e1(vlax-ename->vla-object e1)
  5.   vla_e2(vlax-ename->vla-object e2)
  6.   pts1(vlax-safearray->list(vlax-variant-value(vla-get-coordinates vla_e1)))
  7.   pts2(vlax-safearray->list(vlax-variant-value(vla-get-coordinates vla_e2)))
  8.   )
  9.   (fgb pts1)
  10.   (setq pts1 fglst fglst nil)
  11.   (fgb pts2)
  12.   (setq pts2 fglst fglst nil)
  13.   (setq i 0 m 0)
  14.   (while(< i(length  pts1))
  15.      (setq x (nth i pts1))
  16.      (while (< m(length  pts2))
  17.        (setq y (nth m pts2))

  18.        (setq lst_dist&p (append lst_dist&p (list(list x y (distance x y)))))
  19.        (setq m(1+ m))
  20.         )
  21.     (setq lst_dist&p(vl-sort lst_dist&p(function(lambda(x1 x2)(< (caddr x1)(caddr x2))))))
  22.     (command "line" (caar lst_dist&p)(cadar lst_dist&p) "")
  23.     (setq pts1(vl-remove (caar lst_dist&p) pts1)
  24.     pts2(vl-remove (cadar lst_dist&p) pts2)
  25.     )
  26.     (setq lst_dist&p nil)
  27.     (if(not  pts1)(setq i (1+ i)))
  28.     (if(not  pts2)(setq m (1+ m))(setq m 0))
  29.      )
  30.   )
  31.    
  32. ;;;;;;;;;;;;;;;;;;;;;;;;;;;将表内元素每2个进行分割重新组表;;;;;;;;;;;;;;;;;;;;;;;;;
  33. (defun fgb(lst1 / fglst1 dxf10 n)
  34. (setq n 0 i 0)
  35. (repeat (/(length lst1)2)
  36.    (repeat 2
  37.     (setq  dxf10 (nth n lst1))
  38.     (setq fglst1 (append fglst1 (list dxf10 )))
  39.     (setq n (1+ n))
  40.     )
  41.   (setq fglst (append  fglst (list fglst1 )))
  42.   (setq fglst1 nil)
  43.   (setq i(1+ i))
  44.   )
  45.   )
pxlj.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-10-31 21:18:32 | 显示全部楼层
顶点数不等呢?
多选后怎么确定哪两个连接?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

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

使用道具 举报

 楼主| 发表于 2013-10-31 21:42:34 | 显示全部楼层
都是平行线的顶点,点数是相等的,实际是两根偏移的多段线
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 1757个

财富等级: 堆金积玉

发表于 2013-11-1 12:42:56 | 显示全部楼层
应该是适用于 类似偏移后的 等数量 等顺序两条线

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-1 13:21:19 来自手机 | 显示全部楼层
守仁格竹GM 发表于 2013-11-1 12:42
应该是适用于 类似偏移后的 等数量 等顺序两条线

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

使用道具 举报

 楼主| 发表于 2013-11-1 19:11:36 | 显示全部楼层
最好是一次性框选

点评

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-1 19:44:29 | 显示全部楼层
本帖最后由 st788796 于 2013-11-1 19:50 编辑
■D_zZ 发表于 2013-11-1 19:11
最好是一次性框选

你要框选多少个呢?
  1. (defun c:tt (/ ss el)
  2.   (if (and (setq ss (ssget '((0 . "lwpolyline"))))
  3.     (= (sslength ss) 2)
  4.       )
  5.     (progn
  6.       (setq el (xdrx_pickset->ents ss))
  7.       (mapcar '(lambda (x y)
  8.    (xdrx_line_make x y)
  9.         )
  10.        (xdrx_entity_getstretchpoint (car el))
  11.        (xdrx_entity_getstretchpoint (cadr el))
  12.       )
  13.     )
  14.   )
  15.   (princ)
  16. )

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

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-11-1 20:03:08 | 显示全部楼层
Lisp 的这样
  1. (defun c:tt (/ ss)
  2.   (if (and (setq ss (ssget '((0 . "lwpolyline"))))
  3.     (= (sslength ss) 2)
  4.       )
  5.     (mapcar '(lambda (x y)
  6.         (entmake (list '(0 . "LINE")
  7.          '(100 . "AdDbEntity")
  8.          '(100 . "AcDbLine")
  9.          x
  10.          (cons 11 (cdr y))
  11.    )
  12.         )
  13.       )
  14.      (vl-remove-if-not
  15.        '(lambda (x) (= (car x) 10))
  16.        (entget (ssname ss 0))
  17.      )
  18.      (vl-remove-if-not
  19.        '(lambda (x) (= (car x) 10))
  20.        (entget (ssname ss 1))
  21.      )
  22.     )
  23.   )
  24.   (princ)
  25. )

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

使用道具 举报

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

使用道具 举报

已领礼包: 155个

财富等级: 日进斗金

发表于 2019-9-7 19:22:33 | 显示全部楼层
用了没有效果,根本没有连线连起来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-19 21:15 , Processed in 0.188091 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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