夜未眠 发表于 2014-8-28 17:32:08

打断后归入特定图层

本帖最后由 夜未眠 于 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)
)
)

q3_2006 发表于 2014-8-29 10:30:33

顶点重排....

Andyhon 发表于 2014-8-29 11:07:50

全选
过滤二竖直线 (2) + 一横直线 (1)
余下(3)

夜未眠 发表于 2014-8-29 11:49:31

Andyhon 发表于 2014-8-29 11:07 static/image/common/back.gif
全选
过滤二竖直线 (2) + 一横直线 (1)
余下(3)

余下哪还有3?

Andyhon 发表于 2014-8-29 13:20:16

余下哪还有3?
您图示的黄色线 <--- 3

夜未眠 发表于 2014-8-29 13:58:23

Andyhon 发表于 2014-8-29 13:20 static/image/common/back.gif
余下哪还有3?
您图示的黄色线

晕,左边是原图,右边是想要的结果,都已经变成右边那样的了,还过滤啥啊

Andyhon 发表于 2014-8-29 14:43:30

...打断后的线移动到特定图层中...

打断之后不都是全白?

q3_2006 发表于 2014-8-29 17:38:06

本帖最后由 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)
)

夜未眠 发表于 2014-9-9 09:55:14

q3_2006 发表于 2014-8-29 17:38 static/image/common/back.gif
只是图示这样...好解决...

vl-cmdf "rectang"貌似把原本的删了,重新画了一个矩形,万一不是矩形呢,复杂图形怎么办?

q3_2006 发表于 2014-9-9 11:07:00

夜未眠 发表于 2014-9-9 09:55 static/image/common/back.gif
貌似把原本的删了,重新画了一个矩形,万一不是矩形呢,复杂图形怎么办?

只针对你给的图...没考虑其他情况....
页: [1]
查看完整版本: 打断后归入特定图层