본문 바로가기
autocad

BLOCK 일괄 교체

by kmlab 2021. 9. 23.

;; 선택한 Block들을 특정 Block으로 일괄 교체하기
;; z level = 0.0 / x, y, z scale = 1.0 / rotation ang = 0.0
;; 20210923
(defun KM:BB ( / olds new new_name len n dxf_block )
(prompt "\nSelect block: ")
(if (setq olds (ssget '((0 . "INSERT"))))
(progn
(prompt "\n...Select blocks to be replaced: ...")
(setq new (ssget ":E:S" '((0 . "INSERT"))))
(setq new_name (assoc 2 (entget (ssname new 0))))
(setq len (sslength olds))
(setq n 0)
(repeat len
(setq dxf_block (entget (ssname olds n)))
(setq dxf_block (subst new_name (assoc 2 dxf_block) dxf_block))
(setq dxf_block (subst (cons 30 0.0) (assoc 30 dxf_block) dxf_block))
(setq dxf_block (subst (cons 41 1.0) (assoc 41 dxf_block) dxf_block))
(setq dxf_block (subst (cons 42 1.0) (assoc 42 dxf_block) dxf_block))
(setq dxf_block (subst (cons 43 1.0) (assoc 43 dxf_block) dxf_block))
(setq dxf_block (subst (cons 50 0.0) (assoc 50 dxf_block) dxf_block))
(entmod dxf_block)
(setq n (1+ n))
);repeat
);progn
(princ)
);if
(princ)
);defun 

반응형