本帖最后由 q3_2006 于 2014-8-29 17:39 编辑
只是图示这样...好解决... - (defun ebox (e / pa pb)
- (Vlax-Invoke-Method (Vlax-Ename->Vla-Object e ) 'GetBoundingBox 'pa 'pb )
- (setq pa (trans (vlax-safearray->list pa) 0 1)
- pb (trans (vlax-safearray->list pb) 0 1)
- )
- (list pa pb)
- )
- (defun c:tt ( / a box e odlst p1 p2 pa pb ss)
- (vl-load-com)
- (setq odlst (mapcar 'getvar '("cmdecho" "osmode")))
- (mapcar 'setvar '("cmdecho" "osmode") '(0 0))
- (setq a (car (entsel "选择打断两多段线的直线:"))
- p1 (cdr (assoc 10 (entget a)))
- p2 (cdr (assoc 11 (entget a)))
- ss (ssget "f" (list p1 p2) '((0 . "LWPOLYLINE") (70 . 1)))
- e (ssname ss 0)
- box (ebox e)
- pa (car box)
- pb (cadr box)
- )
- (vl-cmdf "rectang" (list (car pa) (cadr pb)) (list (car pb) (cadr pa)))
- (entdel e)
- (setq e (entlast))
- (vl-cmdf "_.break" (list e p1) "F" p1 "@")
- (Vlax-Put-Property (Vlax-Ename->Vla-Object (entlast)) 'Color 1)
- (Vlax-Put-Property (Vlax-Ename->Vla-Object e) 'Color 2)
- (setq e (ssname ss 1)
- box (ebox e)
- pa (car box)
- pb (cadr box)
- )
- (vl-cmdf "rectang" (list (car pa) (cadr pb)) (list (car pb) (cadr pa)))
- (entdel e)
- (setq e (entlast))
- (vl-cmdf "_.break" (list e p2) "F" p2 "@")
- (Vlax-Put-Property (Vlax-Ename->Vla-Object (entlast)) 'Color 1)
- (Vlax-Put-Property (Vlax-Ename->Vla-Object e) 'Color 2)
- (mapcar 'setvar '("cmdecho" "osmode") odlst)
- )
|