(defun c:GG ( / adoc layerObj bl archlayer archlayercolor newlayer newcolor obj futurec futureco var)
(vl-load-com)
(setvar “cmdecho” 0)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(setq LayerObj (vla-get-Layers adoc))
(setq bl (vlax-get adoc ‘blocks))
(setq archtext “맑은 고딕”)
(setq var (getint “n ARCH <1> / DIM <2> / 실명 <3> / defpoints <4> / ARCH <엔터> :”))
(cond ((= var 1) (setq archlayer “ARCH” archlayercolor 8 archtextcolor 8))
((= var 2) (setq archlayer “DIM” archlayercolor 1 archtextcolor 1))
((= var 3) (setq archlayer “실명” archlayercolor 9 archtextcolor 9))
((= var 4) (setq archlayer “defpoints” archlayercolor 161 archtextcolor 161))
(t (setq archlayer “ARCH” archlayercolor 8 archtextcolor 8))
)
(_addlayer archlayer archlayercolor )
(command “-style” archtext archtext 0 1 0 “n” “n”)
(setq ss (ssget)
n 0
)
(repeat (sslength ss)
(setq obj (vlax-ename->vla-object (ssname ss n)))
(if (and (/= (vla-get-layer obj) archlayer) (= (vla-get-lock (vla-item LayerObj (vla-get-layer obj))) :vlax-false))
(progn
(if (and (= (vla-get-objectname obj) “AcDbBlockReference”) (= (vla-get-isxref (vla-item bl (vla-get-name obj))) :vlax-false))
(BlocklayerchangeC_ obj bl LayerObj archlayer archlayercolor archtext))
(if ( wcmatch (vla-get-objectname obj) “AcDbRotatedDimension,AcDbAlignedDimension”)
(progn
(vla-put-dimensionlinecolor obj archlayercolor)
(vla-put-extensionlinecolor obj archlayercolor)
(vla-put-textcolor obj archtextcolor)
(vla-put-textstyle obj archtext)
)
)
(if (or (wcmatch (vla-get-objectname obj) “AcDbSolid,AcDbHatch”) (and (= (vla-get-objectname obj) “AcDbHatch”) (wcmatch (vla-get-patternname obj) “SOLID*”)) (wcmatch (vla-get-layer obj) “DEFPOINTS”))
(vla-delete obj)
(progn
(if (wcmatch (setq futurec (vla-get-linetype obj)) “ByLayer,BYLAYER”)
(vla-put-linetype obj (vla-get-linetype (vla-item LayerObj (vla-get-layer obj))))
(vla-put-linetype obj futurec))
(vlax-put obj ‘color archlayercolor)
(vlax-put obj ‘layer archlayer)
(if ( wcmatch (vla-get-objectname obj) “AcDbText,AcDbMText,AcDbAttributeDefinition”)
(progn
(vla-put-stylename obj archtext)
(vla-put-color obj archtextcolor)
)
)
)
)
)
)
(setq n (1+ n))
)
(vla-regen adoc acactiveviewport)
)
(defun BlocklayerchangeC_ ( ob bl LayerObj a c tx)
(vlax-for obj (vla-item bl (vla-get-name ob))
(if (and (/= (vla-get-Freeze (vla-item (vla-get-layers adoc) (vla-get-layer obj))) :vlax-true) (= (vla-get-lock (vla-item LayerObj (vla-get-layer obj))) :vlax-false))
(progn
(if (wcmatch (setq futureco (vla-get-linetype obj)) “ByLayer,BYLAYER”)
(vla-put-linetype obj (vla-get-linetype (vla-item LayerObj (vla-get-layer obj))))
(vla-put-linetype obj futureco)
)
; (vla-put-layer obj a)
; (vla-put-color obj c)
(if (wcmatch (vla-get-objectname obj) “AcDbRotatedDimension,AcDbAlignedDimension”)
(progn
(vla-put-textstyle obj tx)
(vla-put-layer obj a)
(vla-put-dimensionlinecolor obj c)
(vla-put-extensionlinecolor obj c)
(vla-put-textcolor obj c)
)
)
(if (wcmatch (vla-get-objectname obj) “AcDbText,AcDbMText,AcDbAttributeDefinition”)
(vla-put-stylename obj tx))
(if (or (wcmatch (vla-get-objectname obj) “AcDbSolid,AcDbHatch”) (and (= (vla-get-objectname obj) “AcDbHatch”) (wcmatch (vla-get-patternname obj) “SOLID*”)) (wcmatch (vla-get-layer obj) “DEFPOINTS”))
(vla-delete obj)
(progn
(vla-put-layer obj a)
(vla-put-color obj c)
(if (= (vla-get-objectname obj) “AcDbBlockReference”)
(BlocklayerchangeC_ obj bl LayerObj a c tx))
)
)
)
(if (= (vla-get-objectname obj) “AcDbBlockReference”)
(BlocklayerchangeC_ obj bl LayerObj a c tx))
)
)
)
(defun _addlayer ( la col / layer )
(while (not (tblsearch “layer” la))
(setq Layer
(vla-add
(vla-get-Layers
(vla-get-activedocument(vlax-get-acad-object))
) la
)
)
(vla-put-Color Layer col)
)
)
현재 이 리습을 쓰고있는데 전 회사에 CAD 2015 버전에서는 잘 작동하다가 현 회사 CAD 2020
버전에서는 리습이 가끔 안먹기도하고 튕기기도합니다.
이유알고계시는분 있나요…ㅠㅠ
많이쓰는 리습이라 부탁드립니다….