wanhongron 发表于 2023-6-3 11:22:33

多段线打断并删除

经常碰到,需要某段多段线,划线再修剪太麻烦了,各位大侠能否实现直接打断后直接删除,如图打断的时候从红色段开始就删除红色段,保留绿色段

foolishzy 发表于 2023-6-6 09:51:57

本帖最后由 foolishzy 于 2023-6-6 09:53 编辑

wanhongron 发表于 2023-6-5 16:31
如果想删除左边就从左边开始往前找打断点,想删除右边从右边开始往前找打断点(defun c:tt (/ a getaverpt e1 e2 n1 n2 avpt1 avpt2)
(defun getaverpt (ename num / n lst sum_aver_pt)
    (setq n   0
    lst (list)
    )
    (while (< n num)
      (setq lst(append lst (list (vlax-curve-getPointAtParam ename n)))
      n(1+ n)
      )
    )
    (setq sum_aver_pt (list 0 0 0))
    (mapcar (function (lambda (x)
      (princ x)
      (setq sum_aver_pt
             (list
         (+ (car sum_aver_pt) (car x))
         (+ (cadr sum_aver_pt) (cadr x))
         0
             )
      )
          )
      )
      lst
    )
    (setq sum_aver_pt
   (list
       (/ (car sum_aver_pt) num)
       (/ (cadr sum_aver_pt) num)
       0
   )
    )
)
(vl-cmdf "BREAK" (setq p1 (getpoint)) (setq p2 (getpoint)))
(setq e1 (entlast))
(entdel (entlast))
(setq e2 (entlast))
(entdel e1)
(setqn1 (cdr (assoc 90 (entget e1)))
n2 (cdr (assoc 90 (entget e2)))
)
(setqavpt1 (getaverpt e1 n1)
avpt2 (getaverpt e2 n2)
)
(if (and
(< (distance avpt1 p1) (distance avpt1 p2))
(> (distance avpt2 p1) (distance avpt2 p2))
      )
    (entdel e1)
    (if
      (and
(> (distance avpt1 p1) (distance avpt1 p2))
(< (distance avpt2 p1) (distance avpt2 p2))
      )
       (entdel e2)
       (princ "\n 手动删除")
    )
)
)

foolishzy 发表于 2023-6-5 09:26:57

(defun c:tt( / a)
        (vl-cmdf "BREAK" pause pause)
        (setq a (entlast))
        (entdel(entlast))
        (entdel(entlast))
        (entdel a)
)

sandyvs 发表于 2023-6-14 23:58:48

foolishzy 发表于 2023-6-6 09:51
wanhongron 发表于 2023-6-5 16:31
如果想删除左边就从左边开始往前找打断点,想删除右边从右边开始往前找 ...

会报错呢?numberp:nil

meja 发表于 2023-6-3 11:31:23

过滤红色多义线,也很快。还是分两步走稳妥

wanhongron 发表于 2023-6-3 12:06:34

本来是一条多段线,为了区分才标示颜色

start4444 发表于 2023-6-3 12:31:15

打断再删除

llsheng_73 发表于 2023-6-3 12:42:31

保留一条线的一部分的话,指定两个点后,求这两个点在线上的最近点,把这两个最近点之外的点去掉得到需要保留的部分的点集,用点集修改线,其它要素当没见说。。。

wanhongron 发表于 2023-6-3 16:13:42

思路是对了,麻烦大侠帮写一下程序

自贡黄明儒 发表于 2023-6-3 21:06:31

两点打断,另一点超出线不行吗?

zm880928 发表于 2023-6-5 08:02:21

wanhongron 发表于 2023-6-3 16:13
思路是对了,麻烦大侠帮写一下程序

你不会写吗

wanhongron 发表于 2023-6-5 09:59:44

谢谢foolishzy大侠,老是从一个方向删除,如果能从开始捕捉的位置删除就更好了
页: [1] 2
查看完整版本: 多段线打断并删除