打断后归入特定图层
本帖最后由 夜未眠 于 2014-8-28 17:35 编辑如图,两条多义线被一条直线打断,如何使之像右边那样打断后的线移动到特定图层中,试过用以下代码来实现“倒数第一个图元入2层,倒数第二个图元入3层”,可惜产生的4条线哪个是倒数第一,哪个是倒数第二似乎也不确定;;+++++++++++++++++++++++++++++++++++++++++
;; 倒数第i个图元
;;+++++++++++++++++++++++++++++++++++++++++
(DEFUN daoshu (i / acdocument acspace ent_name)
(SETQ acdocument (VLA-GET-ACTIVEDOCUMENT (VLAX-GET-ACAD-OBJECT)))
(IF (= (VLA-GET-ACTIVESPACE acdocument) ACMODELSPACE)
(SETQ acspace (VLA-GET-MODELSPACE acdocument))
(SETQ acspace (VLA-GET-PAPERSPACE acdocument))
)
(IF (AND (= (TYPE i) 'int)
(>= (- (VLA-GET-COUNT acspace) i) 0)
(>= i 1)
)
(SETQ ent_name (VLAX-VLA-OBJECT->ENAME
(VLA-ITEM acspace (- (VLA-GET-COUNT acspace) i))
)
)
(SETQ ent_name nil)
)
) 顶点重排.... 全选
过滤二竖直线 (2) + 一横直线 (1)
余下(3)
Andyhon 发表于 2014-8-29 11:07 static/image/common/back.gif
全选
过滤二竖直线 (2) + 一横直线 (1)
余下(3)
余下哪还有3? 余下哪还有3?
您图示的黄色线 <--- 3 Andyhon 发表于 2014-8-29 13:20 static/image/common/back.gif
余下哪还有3?
您图示的黄色线
晕,左边是原图,右边是想要的结果,都已经变成右边那样的了,还过滤啥啊 ...打断后的线移动到特定图层中...
打断之后不都是全白? 本帖最后由 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)
) q3_2006 发表于 2014-8-29 17:38 static/image/common/back.gif
只是图示这样...好解决...
vl-cmdf "rectang"貌似把原本的删了,重新画了一个矩形,万一不是矩形呢,复杂图形怎么办? 夜未眠 发表于 2014-9-9 09:55 static/image/common/back.gif
貌似把原本的删了,重新画了一个矩形,万一不是矩形呢,复杂图形怎么办?
只针对你给的图...没考虑其他情况....
页:
[1]