找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2050|回复: 7

[研讨] [功能]多段线局部拷贝

[复制链接]
发表于 2016-6-6 11:44:27 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 newer 于 2016-6-6 11:47 编辑

  1. ;;[功能]多段线局部拷贝
  2. (defun C:www (/ E E0 E1 LST LST1 LST2 MP P0 P1 PTS SSP0 SSP1)
  3.   (cond
  4.     ((and
  5.        (setq p0 (getpoint "\n>起点:"))
  6.        (setq p1 (getpoint p0 "\n>>另一起点:"))
  7.        (setq SSp0 (ssget "C" p0 p0 '((0 . "LWPOLYLINE"))))
  8.        (setq SSp1 (ssget "C" p1 p1 '((0 . "LWPOLYLINE"))))
  9.        ;;(SSHasSameE ss1 ss2) http://bbs.xdcad.net/thread-704257-1-2.html
  10.        (setq e (SSHasSameE SSp0 SSp1))
  11.        (setq e0 (entlast))
  12.        (setq e1 (vla-copy (vlax-ename->vla-object e)))
  13.        ;;(IntersLwpolylineRay e p1 p2) http://bbs.xdcad.net/thread-704380-1-1.html
  14.        (setq pts (IntersLwpolylineRay (vlax-vla-object->ename e1) p1 p0))
  15.      )

  16.      ;;(break_obj ent brkptlst) http://bbs.xdcad.net/thread-704397-1-1.html        
  17.      (break_obj (vlax-vla-object->ename e1) pts)
  18.      (while (setq e0 (entnext e0))
  19.        (if (not        (member        (cdr (assoc 0 (entget e0)))
  20.                         '("ATTRIB"
  21.                           "VERTEX"
  22.                           "SEQEND"
  23.                          )
  24.                 )
  25.            )
  26.          (setq Lst (cons e0 Lst))
  27.        )
  28.      )
  29.      ;;取打断后的中点来判断在p0 p1的哪一边
  30.      ;;(det p1 p2 p3)见highflybird大师的帖子
  31.      (foreach x        Lst
  32.        (setq Mp (* (- (vlax-curve-getendparam x) (vlax-curve-getstartparam x)) 0.5))
  33.        (setq Mp (vlax-curve-getPointAtParam Mp))
  34.        (cond ((MINUSP (det p1 p0 Mp)) (setq Lst1 (cons x Lst1)))
  35.              (T (setq Lst2 (cons x Lst2)))
  36.        )
  37.      )
  38.     )
  39.   )
  40.   (princ)
  41. )

评分

参与人数 1D豆 +5 收起 理由
newer + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-6-6 11:48:59 | 显示全部楼层
封闭的多段线,要取 跨过起点的部分,能截取吗?

点评

http://bbs.xdcad.net/thread-704397-1-1.html 能,这个是 command打断的。不存在你担心的问题  详情 回复 发表于 2016-6-6 11:54
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-6 11:54:54 | 显示全部楼层
本帖最后由 WhoCanSay 于 2016-6-6 11:57 编辑
newer 发表于 2016-6-6 11:48
封闭的多段线,要取 跨过起点的部分,能截取吗?

http://bbs.xdcad.net/thread-704397-1-1.html
能,这个是 command打断的。不存在你说的问题

这个是打断了,打断点两边也分好了 组,怎么移动还没有想好。

点评

看你的代码就拾取了两个点,如果多段线闭合,你怎么知道要截取那边呢?  详情 回复 发表于 2016-6-6 12:15
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-6-6 12:15:21 | 显示全部楼层
WhoCanSay 发表于 2016-6-6 11:54
http://bbs.xdcad.net/thread-704397-1-1.html
能,这个是 command打断的。不存在你说的问题

看你的代码就拾取了两个点,如果多段线闭合,你怎么知道要截取那边呢?

点评

保留哪一边,是想通过移动鼠标来判断。  详情 回复 发表于 2016-6-6 12:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-6-6 12:33:26 | 显示全部楼层
newer 发表于 2016-6-6 12:15
看你的代码就拾取了两个点,如果多段线闭合,你怎么知道要截取那边呢?

保留哪一边,是想通过移动鼠标来判断。

点评

那样就多一次交互了,不如这样,删除起点到终点之间的,起点的参数值要大于终点的,那么就是截取跨过起点的那边,否则就是正常截取。这样就少一次交互了。  详情 回复 发表于 2016-6-6 12:45
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-6-6 12:45:52 | 显示全部楼层
WhoCanSay 发表于 2016-6-6 12:33
保留哪一边,是想通过移动鼠标来判断。

那样就多一次交互了,不如这样,删除起点到终点之间的,起点的参数值要大于终点的,那么就是截取跨过起点的那边,否则就是正常截取。这样就少一次交互了。

点评

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

使用道具 举报

已领礼包: 6468个

财富等级: 富甲天下

发表于 2016-6-6 13:58:22 | 显示全部楼层
newer 发表于 2016-6-6 12:45
那样就多一次交互了,不如这样,删除起点到终点之间的,起点的参数值要大于终点的,那么就是截取跨过起点 ...

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

使用道具 举报

发表于 2024-1-8 18:24:33 | 显示全部楼层
本帖最后由 striver 于 2024-7-17 14:49 编辑

在cad2007和cad2014下进行了测试,对非闭合的多段线截取多段线上任意两点间的线段 结果不正确,不知问题出在哪里。

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 00:12 , Processed in 0.190752 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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