캐드(AutoCAD) AutoLisp 강좌 예제 - 문자 정렬 하기 (상하, 좌우 정렬)
캐드(AutoCAD) AutoLisp 강좌 예제 - 문자 정렬 (상하, 좌우 정렬)
AutoCAD 도면을 작업하다보면, 문자 (Text, MText)의 상하, 좌우 정렬을 일괄적으로 할 때가 있습니다.
아래의 각 정렬을 위한 간단한 AutoLisp 코드 예제입니다.
좌측 정렬 프로그램 (명령 : left-align())
(defun c:left-align ()
(setq ref-text (car (entsel "\n기준이 되는 텍스트를 선택하세요: "))) ; 기준 텍스트 선택
(if ref-text
(progn
(setq ref-data (entget ref-text))
(setq ref-x (car (cdr (assoc 10 ref-data)))) ; 기준 텍스트의 X 좌표 가져오기
(setq ss (ssget '((0 . "TEXT,MTEXT")))) ; 정렬할 텍스트 선택
(if ss
(progn
(setq count (sslength ss))
(repeat count
(setq ent (ssname ss (setq count (1- count)))) ; 선택한 엔티티 가져오기
(setq ent-data (entget ent))
(if (and (not (= (cdr (assoc 0 ent-data)) "TEXT"))
(not (= (cdr (assoc 0 ent-data)) "MTEXT"))) ; 텍스트가 아닌 경우 건너뛰기
(progn
(princ "\n선택한 엔티티는 텍스트가 아닙니다.")
)
(progn
(setq old-pt (cdr (assoc 10 ent-data))) ; 기존 좌표 가져오기
(setq new-pt (list ref-x (cadr old-pt) (last old-pt))) ; 새로운 X 좌표 설정
(entmod (subst (cons 10 new-pt) (assoc 10 ent-data) ent-data))
)
)
)
(princ "\n선택된 텍스트가 기준 텍스트에 맞춰 정렬되었습니다.")
)
(princ "\n정렬할 텍스트가 선택되지 않았습니다.")
)
)
(princ "\n기준 텍스트가 선택되지 않았습니다.")
)
(princ)
)
우측 정렬 프로그램 (명령 : right-align())
(defun c:right-align ()
(setq ref-text (car (entsel "\n기준이 되는 텍스트를 선택하세요: "))) ; 기준 텍스트 선택
(if ref-text
(progn
(setq ref-data (entget ref-text))
(setq ref-y (cadr (cdr (assoc 10 ref-data)))); 기준 텍스트의 Y 좌표 가져오기
(setq ss (ssget '((0 . "TEXT,MTEXT")))) ; 정렬할 텍스트 선택
(if ss
(progn
(setq count (sslength ss))
(repeat count
(setq ent (ssname ss (setq count (1- count)))) ; 선택한 엔티티 가져오기
(setq ent-data (entget ent))
(if (and (not (= (cdr (assoc 0 ent-data)) "TEXT"))
(not (= (cdr (assoc 0 ent-data)) "MTEXT"))) ; 텍스트가 아닌 경우 건너뛰기
(progn
(princ "\n선택한 엔티티는 텍스트가 아닙니다.")
)
(progn
(setq old-pt (cdr (assoc 10 ent-data))) ; 기존 좌표 가져오기
(setq new-pt (list (car old-pt) ref-y (last old-pt))) ; 새로운 Y 좌표 설정
(entmod (subst (cons 10 new-pt) (assoc 10 ent-data) ent-data))
)
)
)
(princ "\n선택된 텍스트가 기준 텍스트에 맞춰 정렬되었습니다.")
)
(princ "\n정렬할 텍스트가 선택되지 않았습니다.")
)
)
(princ "\n기준 텍스트가 선택되지 않았습니다.")
)
(princ)
)
좌측 정렬과 우측 정렬의 AutoLisp 프로그램은 명령을 실행하면, Text, MText를 선택하여 실행하는 간단한 프로그램입니다.
위의 예제는 Lisp을 공부하는 분들에게 도움이 되고자 만든 것이며, 실 사용은 여러분이 원하는 형태로 변경하여 사용하시길 바랍니다.
사용 방법1:
1. 위의 코드를 원하는이름.lsp 파일을 만들어 저장합니다.
2. Appload 명령을 이용하여, 리습파일을 로드합니다.
3. 명령창에 각각의 명령을 입력하면, 객체를 선택하라는 메시지가 나타납니다.
4. 객체를 선택하면, 선택한 객체의 레이어로 현재 레이어가 변경됩니다.