hooboxu 发表于 2014-12-3 22:27:17

请问 这打断命令可以改成选择多条线同时打断至点或多点吗?

(defun c:bv();打断于点
(while (and (setq ENT(car (entsel))) (setq PT(getpoint "\n指定一个打断点: ")))
    (command "._BREAK" ENT "_NON" PT "_NON" PT)
)
)



谢谢大家了

print1985 发表于 2014-12-3 22:27:18

本帖最后由 print1985 于 2014-12-6 15:26 编辑

(vl-load-com)
(defun c:dd (/ e i obj p1 p2 pst s ss x)
(princ "\n请选择需打断的所有直线")
(if (setq ss (ssget '((0 . "*LINE"))))
    (progn
      (while (setq p1 (getpoint "\n指定打断点"))
                (progn
                  (setq i 0)
                  (repeat (sslength ss)
                  (setq e (ssname ss i)
                        obj (vlax-ename->vla-object e)
                        p2 (vlax-curve-getclosestpointto obj p1 T)
                        pst (cons p2 pst)
                        i (1+ i)
                  )
                  )
                )
      )
      (foreach x pst
                (if (setq s (ssget "c" x x '((0 . "*LINE"))))
                  (command "break" (ssname s 0) x x)
                )
      )
    )
)
(princ)
)
试试吧

自贡黄明儒 发表于 2014-12-3 23:06:40

ent应该是个表,象entseLL的还回值

龙城飞将36 发表于 2014-12-4 14:13:00

不清楚楼主什么意思,配个图

hooboxu 发表于 2014-12-4 20:56:43

本帖最后由 hooboxu 于 2014-12-4 21:00 编辑

龙城飞将36 请看看

print1985 发表于 2014-12-6 11:37:33

平行且等长的直线吗?
如果不平行 不等长 需要遵循什么规则?

hooboxu 发表于 2014-12-6 12:31:58

如果是竖向的直接而有长短的话, 则以鼠标点击的X坐标打断.横向直线则以Y坐标打断

hooboxu 发表于 2014-12-6 17:57:12

本帖最后由 hooboxu 于 2014-12-6 18:53 编辑

感谢print1985热心的帮忙谢谢你,,但还有BUG,意思是对了
页: [1]
查看完整版本: 请问 这打断命令可以改成选择多条线同时打断至点或多点吗?