안녕하세요, 오늘은 AutoCAD에서 작업할 때 선택한 치수나 문자에 특정 기호를 손쉽게 추가할 수 있는 리습(LISP) 프로그램을 소개하려고 합니다. 이 프로그램은 반복적인 기호 추가 작업을 자동화하여 작업 효율을 높이는 데 도움이 됩니다.
이 리습 프로그램은 다음과 같은 기능을 제공합니다:
기호를 추가할 때 두 가지 방법으로 코드를 입력할 수 있습니다:
코드 | 기호 | 설명 |
---|---|---|
%%C 또는 %%248 |
⌀ | 지름 |
%%D 또는 %%176 |
° | 도 |
%%P 또는 %%177 |
± | 공차 |
%%178 |
² | 제곱 |
%%179 |
³ | 세제곱 |
%%215 |
× | 곱하기 |
%%247 |
÷ | 나누기 |
%%33 |
! | 느낌표 |
%%34 |
" | 따옴표 |
\U+코드
)코드 | 기호 | 설명 |
---|---|---|
\U+2205 |
⌀ | 지름 |
\U+00B0 |
° | 도 |
\U+00B1 |
± | 공차 |
\U+00B2 |
² | 제곱 |
\U+00B3 |
³ | 세제곱 |
\U+0278 |
ɸ | 전기위상 |
\U+0394 |
Δ | 델타 |
\U+0424 |
Ф | 파이 |
\U+2104 |
℄ | 중심선 |
\U+2126 |
Ω | 옴 |
\U+2220 |
∠ | 각도 |
\U+2248 |
≈ | 거의 같음 |
\U+2260 |
≠ | 같지 않음 |
\U+2261 |
≡ | 항등 |
\U+214A |
⅊ | 판/특성 선 |
\U+E001 |
사용자 정의 기호 | |
\U+E002 |
■ | |
\U+E003 |
□ | |
\U+E110 |
↑ | |
\U+E111 |
→ | |
\U+E112 |
← | |
\U+E234 |
사용자 정의 기호 |
참고: 일부 기호는 유니코드로 표시되지 않을 수 있으나, 필요한 경우 해당 코드를 사용하여 추가할 수 있습니다.
symbol-code
: 추가할 기호의 코드 (예: "%%C"
또는 "\U+2205"
)add-position
: 기호를 추가할 위치 ("앞"
또는 "뒤"
)add-space
: 기호와 텍스트 사이에 공백 추가 여부 (T
또는 nil
)c:QQ
: 명령어 이름을 원하는 단축키로 변경 (예: c:ADDSYMBOL
)아래는 리습 프로그램의 전체 코드입니다:
(defun c:QQ (/ os ss sslen elist ass1 otxt ntxt k
symbol-code ; 추가할 기호의 코드
symbol-pattern ; 기호가 이미 있는지 확인하는 패턴
add-position ; 기호를 앞에 추가할지 뒤에 추가할지 ("앞" 또는 "뒤")
add-space) ; 기호와 텍스트 사이에 공백 추가 여부 (T 또는 nil)
;; 사용자 설정 부분 시작
(setq symbol-code "%%C") ; 추가할 기호의 코드 (예: "%%C" 또는 "\U+2205")
(setq add-position "앞") ; 기호 추가 위치: "앞" 또는 "뒤"
(setq add-space nil) ; 기호와 텍스트 사이에 공백 추가 여부: T 또는 nil
;; 사용자 설정 부분 끝
;; 기호가 이미 있는지 확인하는 패턴 설정
(setq symbol-pattern (strcat symbol-code "*"))
(setvar "cmdecho" 0)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(prompt "\n기호를 추가할 치수나 문자를 선택하세요 -> ")
(setq ss (ssget))
(if ss
(progn
(setq sslen (sslength ss) k 0)
(while (< k sslen)
(setq elist (entget (ssname ss k)))
(setq ass1 (assoc 1 elist))
(setq otxt (cdr ass1))
(if (or (not otxt) (= otxt ""))
(setq otxt "<>"))
;; 텍스트에 이미 기호가 없는 경우에만 추가
(if (not (wcmatch otxt symbol-pattern))
(progn
;; 공백 추가 여부에 따라 공백 설정
(setq space (if add-space " " ""))
;; 기호를 앞 또는 뒤에 추가
(setq ntxt
(cond
((equal add-position "앞") (strcat symbol-code space otxt))
((equal add-position "뒤") (strcat otxt space symbol-code))
(T otxt)))
;; 엔티티 리스트에서 텍스트 업데이트
(setq elist (subst (cons 1 ntxt) ass1 elist))
;; 엔티티 수정 적용
(entmod elist)
)
)
(setq k (1+ k))
)
)
)
(setvar "osmode" os)
(prin1)
)
(setq symbol-code "%%C") ; 추가할 기호의 코드 (예: "%%C" 또는 "\U+2205")
원하는 기호의 코드를 symbol-code
변수에 입력합니다.
(setq add-position "앞") ; 기호 추가 위치: "앞" 또는 "뒤"
"앞"
: 기존 텍스트 앞에 기호를 추가합니다."뒤"
: 기존 텍스트 뒤에 기호를 추가합니다.(setq add-space nil) ; 기호와 텍스트 사이에 공백 추가 여부: T 또는 nil
T
: 기호와 텍스트 사이에 공백을 추가합니다.nil
: 공백 없이 기호를 추가합니다.(defun c:QQ (...)
c:QQ
에서 QQ
를 원하는 단축키로 변경합니다. 예를 들어 c:ADDSYMBOL
로 변경하면 명령창에서 ADDSYMBOL
을 입력하여 실행할 수 있습니다.
QQ
(또는 설정한 단축키)를 입력합니다.이 리습 프로그램을 통해 반복적인 기호 추가 작업을 자동화하여 작업 시간을 단축하고 효율성을 높일 수 있습니다. 필요에 따라 코드를 커스터마이징하여 자신만의 작업 환경을 구축해 보세요.
즐거운 작업 되세요!