(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 값을 반환합니다.
'캐드리습' 카테고리의 다른 글
빠른인쇄 윈도우범위 A4 리습 (0) | 2023.02.14 |
---|---|
레이어 변경 리습 (없으면 만들기) (0) | 2023.02.14 |
제자리 블럭 만들기 이름지정 가능 리습 (0) | 2023.02.14 |
선택점 중심에서 장공 그리기 리습 (0) | 2023.02.14 |
블럭 이름 변경 리습 (이름 앞,뒤 첨자 추가) 리습 설명 (0) | 2023.02.14 |