캐드(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)

)

[ChangeTextFont.lsp 다운로드]

3. ChangeTextFont 명령 실행하기


Appload로 응용프로그램을 로드(Load)하여 ChangeTextFont 명령을 입력하여 위의 이미지와 같이 명령을 실행하여, 변경하고자 하는 Text, MText를 선택하여 실행하면 폰트 스타일이 변경됩니다.


4. 코드 설명

1. 폰트 이름 입력: 사용자가 변경할 폰트 이름을 입력하도록 요청합니다. (test 입력)
2. 텍스트 객체 선택: ssget 함수를 사용하여 도면 내의 모든 텍스트(TEXT, MTEXT) 객체를 선택합니다.
3. 객체 확인: 선택된 객체가 있는지 확인합니다.
선택된 객체가 없으면 메시지를 출력합니다.
4. 반복문: 선택된 객체의 수만큼 반복하여 각 객체에 접근합니다.
5. 폰트 변경:
TEXT 객체인 경우: assoc 함수를 사용하여 폰트 정보를 찾아 새로운 폰트로 변경합니다.
MTEXT 객체인 경우도 동일한 방식으로 폰트를 변경합니다.
6. 객체 수정: entmod 함수를 사용하여 변경된 객체 데이터를 도면에 적용합니다.
7. 완료 메시지: 모든 텍스트 객체의 폰트 변경이 완료되면 사용자에게 알림을 제공합니다.

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. 변경된 폰트 스타일을 확인합니다.


이 코드를 활용하면 쉽게 좌표를 문자로 표시하고, 다른 리습 프로그램을 응용할 수 있습니다.