magicheno 发表于 2020-11-26 19:36:55

属性块或块,块内或块外图层如何变更

本帖最后由 magicheno 于 2020-11-30 19:36 编辑

请教下大侠们,比如类似一个还有标高的属性块或其他块,如何能使命令比如TT5,框选一个或者多个对象,使得属性块内的对象变为0层,块外的图层按我设定的指定图层来指定,比如“A"图层,这样子可以实现么

magicheno 发表于 2021-9-21 01:35:49

本帖最后由 magicheno 于 2021-9-21 01:47 编辑

自己找来的一些程序然后瞎拼乱凑解决啦,先把属性块等等块变为0层,再变更为自己想要的图层名

好像不能给自己加币,尴尬了,自己的帖子怎样才能自己结束然后归还币呢~~~
(defun c:TT5 ()
(setq I 0)
(if (setq ss (ssget)
    (PROGN (REPEAT (SSLENGTH SS)
             (setq ENT (SSNAME SS I))
             (setq OBJ (vlax-ename->vla-object ENT))
             (CHANGE-COLOR OBJ)
             (setq I (1+ I))
         )
    )
)
(setq oldlay (getvar "clayer"))
(command "layer" "m" "WP" "c" "4" "" "")
(command "change" ss "" "p" "la" "WP" "")
(command "clayer" oldlay)
(PRINC)
)


(DEFUN CHANGE-COLOR (OBJ / NAME *ACAD* *BLKS* *DOC*)
(setq *ACAD* (vlax-get-acad-object))
(setq *DOC* (vla-get-ActiveDocument *ACAD*))
(setq *BLKS* (vla-get-Blocks *DOC*))
(vla-put-Layer OBJ "0")
(vla-put-Color OBJ acByLayer)
(if (OR (= (vla-get-ObjectName OBJ) "AcDbBlockReference")
          (= (vla-get-ObjectName OBJ) "AcDbMInsertBlock")
      )
    (PROGN (FOREACH ATT      (vlax-invoke OBJ 'GETATTRIBUTES)
             (vla-put-Layer ATT "0")
             (vla-put-Color ATT acByLayer)
         )
         (setq NAME (vla-get-Name OBJ))
         (VLAX-FOR N (vla-Item *BLKS* NAME) (CHANGE-COLOR N))
    )
)
)
页: [1]
查看完整版本: 属性块或块,块内或块外图层如何变更