本帖最后由 millermin 于 2012-4-12 09:08 编辑
奉献两个打断程序。一直线打断一组线。这个好办,一个循环就完成了。另一个是一组线打断一根直线。这个有点麻烦,因为断第一点以后,原来的目标变成了两个,那么原来的变量名就不能再用,程序无法继续。经过观察,找到解决办法,请各位行家大力斧正。为提高操作速度,我特意分成两个程序,只要记住两个程序名就可以节省了操作过程中的选项。
1. 一断多:
(defun c:bpm (/ pt )
(vl-load-com)
(setvar "cmdecho" 0)
(setvar "orthomode" 0)
(setq bl (car (entsel "\nCHOOSE A LINE TO BE CUT:")))
(setq bl-v (vlax-ename->vla-object bl))
(prompt "\nCHOOSE CUTTING LINES:")
(setq cutln-s(ssget '((0 . "LINE,ARC,CIRCLE,ELLIPSE,LWPOLYLINE,SPLINE"))))
(setq m 0)
(setq n 0)
( while (< m (sslength cutln-s))
(setq cutln (ssname cutln-s m))
(setq cutln-v (vlax-ename->vla-object cutln))
(if (and (setq point-v (vla-intersectwith bl-v cutln-v acExtendNone))
<