打断与相交的所有线
你好任何一个都可以使用lsp例程来断开相互相交的直线。。
谢谢 听起来标准不好 在这里查看,,,需要注册,但免费
http://www.theswamp.org/index.php?topic=10370.0 作为一种选择,我很快就想到了:
;;; Break All, by Lee McDonnell.25/07/2009
(defun c:brkAll (/ *error* doc spc ss Objlst Obj iLst Altlst lst)
(vl-load-com)
(defun *error* (msg)
(if doc (vla-EndUndoMark doc))
(if ov (mapcar 'setvar vl ov))
(if (not
(wcmatch
(strcase msg) "*BREAK,*EXIT*,*CANCEL*"))
(princ
(strcat "\n** Error: " msg " **")))
(princ))
(setq doc (vla-get-ActiveDocument
(vlax-get-Acad-Object))
spc (if (zerop (vla-get-activespace doc))
(if (= (vla-get-mspace doc) :vlax-true)
(vla-get-modelspace doc)
(vla-get-paperspace doc))
(vla-get-modelspace doc)))
(setq vl '("CMDECHO" "OSMODE")
ov (mapcar 'getvar vl))
(vla-StartUndoMark doc)
(or *brk$dis* (setq *brk$dis* 5.))
(if (setq ss (ssget '((0 . "*LINE,ARC"))))
(progn
(or (not
(setq tmp
(getdist
(strcat "\nSpecify Break Distance <" (rtos *brk$dis* 2 2) "> : "))))
(setq *brk$dis* tmp))
(setq Objlst
(mapcar 'vlax-ename->vla-object
(vl-remove-if 'listp
(mapcar 'cadr (ssnamex ss)))))
(while (setq Obj (car Objlst))
(foreach iObj (setq Objlst (cdr Objlst))
(setq iLst
(cons
(cons Obj
(vlax-list->3D-point
(vlax-invoke Obj
'IntersectWith iObj acExtendNone))) iLst))))
(mapcar 'setvar vl '(0 0))
(foreach Int (vl-remove-if-not
(function
(lambda (x)
(vl-consp (cdr x)))) iLst)
(setq Obj (car Int))
(foreach Pt (cdr Int)
(and Altlst (setq lst Altlst))
(if (not (setq bDis (vlax-curve-getDistatPoint Obj Pt)))
(while (and (not bDis) lst)
(setq bDis (vlax-curve-getDistatPoint (setq Obj (car lst)) Pt)
lst (cdr lst))))
(if bDis
(progn
(or (setq bPt1 (vlax-curve-getPointatDist Obj
(+ bDis (/ *brk$dis* 2.))))
(setq bPt1 (vlax-curve-getEndPoint Obj)))
(or (setq bPt2 (vlax-curve-getPointatDist Obj
(- bDis (/ *brk$dis* 2.))))
(setq bPt2 (vlax-curve-getStartPoint Obj)))
(command "_.Break"
(list (vlax-vla-object->ename Obj) pt) "_F" bPt1 bPt2)
(setq AltLst (cons (vlax-ename->vla-object (entlast)) AltLst)))))))
(princ "\n** Nothing Selected **"))
(vla-EndUndoMark doc)
(mapcar 'setvar vl ov)
(princ))
(defun vlax-list->3D-point (lst)
(if lst
(cons (list (car lst) (cadr lst) (caddr lst))
(vlax-list->3D-point (cdddr lst)))))
非常酷的常规!!!
问题:
1.是否可以根据用户输入指定垂直线或水平线断开?
2.是否可以只打断彼此完全相交的线,而忽略仅接触而不相交的线,例如使用垂直osnap绘制的线?
非常感谢。
射线
谢谢你,雷,
如果我有更多的时间的话,我想这两个都是可能的,但我会看看我能做些什么。
同时,看看这个——有人花了更多的时间在同样的事情上。。。
http://www.theswamp.org/index.php?topic=10370.0
这正是我需要的!
有人能帮忙吗?请
你查过我提供的链接了吗? 是的,但链接上的宏不会只打断与水平线相交的垂直线
它还打断了垂直于
我需要的是:选择一束线(许多线),然后只打断与水平线相交的垂直线
页:
[1]
2