캐드(AutoCAD)에서 AutoLisp 강좌 예제 - font style (폰트 스타일) 변경하기
AutoLisp 강좌 예제 - font style (폰트 스타일) 변경하기
AutoCAD 도면을 작성하다보면, 폰트 (font style)이 각각 다른 경우가 종종 있습니다.
특히, 타사에서 도면을 작업하다가 회사에 없는 폰트체를 사용하는 경우도 많은데요.
이런 경우 원하는 Text, MText를 선택하여, 스타일(Style)에서 만들어 놓은 폰트 스타일을 변경하고자 할 경우, AutoLisp으로 쉽게 구현할 수 있습니다.
위의 도면 이미지는 좌측의 Standard 폰트 스타일로 작성되어 있는 폰트 스타일을 test 라는 폰트 스타일로 변경된 테스트 화면입니다.1. 폰트 스타일 만들기
Style 명령을 이용하여 문자스타일을 명령에서 스타일을 만들어야 합니다.
1. 새로 만들기 (test 스타일명 입력)
2. 글꼴에서 "맑은 고딕"을 선택 합니다. (원하는 글꼴을 선택하시면 됩니다.)
3. 적용 버튼을 이용하여 만들기를 완료합니다.
2. AutoLisp 코드 작성
ChangeTextFont.lsp 다운로드(defun c:ChangeTextFont ( / ss fontName)
;; 사용자가 폰트 이름을 입력받음
(setq fontName (getstring "\n변경할 폰트 이름을 입력하세요: "))
;; 현재 도면의 모든 텍스트 객체를 선택
(setq ss (ssget '((0 . "TEXT,MTEXT"))))
;; 선택된 객체가 있는지 확인
(if ss
(progn
(setq count (sslength ss)) ; 선택된 객체 수를 저장
;; 반복문을 통해 모든 텍스트 객체에 접근
(repeat count
(setq ent (ssname ss (setq count (1- count)))) ; 현재 객체 가져오기
(setq data (entget ent)) ; 객체 데이터를 가져오기
;; 텍스트 객체의 폰트를 변경
(if (= (cdr (assoc 0 data)) "TEXT")
(progn
(setq newData (subst (cons 7 fontName) (assoc 7 data) data)) ; 폰트 변경
(entmod newData) ; 객체 수정
)
)
;; MText 객체의 경우
(if (= (cdr (assoc 0 data)) "MTEXT")
(progn
(setq newData (subst (cons 7 fontName) (assoc 7 data) data)) ; 폰트 변경
(entmod newData) ; 객체 수정
)
)
)
(princ "\n모든 텍스트 객체의 폰트가 변경되었습니다.")
)
(princ "\n선택된 텍스트 객체가 없습니다.")
)
(princ)
)
3. ChangeTextFont 명령 실행하기
Appload로 응용프로그램을 로드(Load)하여 ChangeTextFont 명령을 입력하여 위의 이미지와 같이 명령을 실행하여, 변경하고자 하는 Text, MText를 선택하여 실행하면 폰트 스타일이 변경됩니다.
4. 코드 설명
선택된 객체가 없으면 메시지를 출력합니다.
5. 사용방법
사용 방법1:
1. 이 코드를 AutoCAD의 VisualLISP 편집기에서 입력하고, 저장 후 로드합니다.
2. 명령창에서 ChangeTextFont 명령을 입력합니다.
3. 폰트 이름을 입력합니다. (예: test)
4. 폰트 스타일 변경하고자 하는 Text, MText를 모두 선택합니다.
5. 변경된 폰트 스타일을 확인합니다.
사용 방법2:
1. 원하는 이름.lsp 파일을 만들고, 위의 코드를 작성합니다.
2. Appload 명령을 이용하여 (원하는 이름.lsp)파일을 선택하여 load 합니다.
3. 명령창에서 ChangeTextFont 명령을 입력합니다.
4. 폰트 이름을 입력합니다. (예: test)
5. 폰트 스타일 변경하고자 하는 Text, MText를 모두 선택합니다.
6. 변경된 폰트 스타일을 확인합니다.
이 코드를 활용하면 쉽게 좌표를 문자로 표시하고, 다른 리습 프로그램을 응용할 수 있습니다.