본문 바로가기
캐드리습

블럭 이름 일괄 변경 (날짜,시간 일련번호) 리습

by good-life-story 2023. 2. 14.
728x90

(defun c:BN( / block nbn bn)
(setvar "cmdecho" 0)
(setq block (tblnext "block" T))
(while block
(if (/= (substr (setq bn (cdr (assoc 2 block))) 1 1) "*")
(progn
(while (tblsearch "block" (setq nbn (rtos (getvar "cdate") 2 8))))
(command "rename" "b" bn nbn)
)
)
(setq block (tblnext "block"))
)
(princ)
)

=========================================================

 

아래는 각 줄의 코드 설명입니다.

 

(defun c:BN( / block nbn bn)

·         c:BN는 AutoCAD에서 사용자 정의 명령어 이름입니다. 이 명령어는 블록 이름을 일괄 변경하는 기능을 수행합니다.

·         block, nbn, bn은 로컬 변수입니다.

 

(setvar "cmdecho" 0)

·         setvar 함수를 사용하여 cmdecho 시스템 변수를 0으로 설정합니다. 이렇게 하면 AutoCAD가 명령 프롬프트에 출력하는 모든 메시지가 무시됩니다.

 

(setq block (tblnext "block" T))

·         tblnext 함수를 사용하여 현재 데이터베이스에서 "block" 테이블의 첫 번째 블록을 가져옵니다.

 

(while block

·         while 루프를 사용하여 "block" 테이블의 모든 블록을 반복적으로 검색합니다.

 

(if (/= (substr (setq bn (cdr (assoc 2 block))) 1 1) "*")

·         assoc 함수를 사용하여 블록 테이블의 각 블록에서 이름을 가져옵니다.

·         substr 함수를 사용하여 이름의 첫 번째 글자를 가져옵니다.

·         블록 이름이 "*"로 시작하지 않으면 이후의 코드를 실행합니다.

 

(progn (while (tblsearch "block" (setq nbn (rtos (getvar "cdate") 2 8)))) (command "rename" "b" bn nbn) )

·         tblsearch 함수를 사용하여 "block" 테이블에서 중복되지 않는 새로운 이름을 만듭니다.

·         rtos 함수를 사용하여 현재 날짜와 시간을 문자열로 변환합니다.

·         command 함수를 사용하여 블록 이름을 새 이름으로 변경합니다.

 

(setq block (tblnext "block")) )

·         "block" 테이블에서 다음 블록을 가져와서 block 변수에 저장합니다.

 

(princ)

·         princ 함수를 사용하여 nil 값을 반환합니다.

728x90