오토캐드 AutoLisp 강좌 예제 - 객체선택 레이어(Layer)명 확인
오토캐드 AutoLisp 강좌 예제 - 객체선택 레이어(Layer)명 확인
AutoCAD에서 AutoLISP을 사용하여 객체의 레이어를 가져오는 예제입니다.
다음은 코드 예제와 설명을 참조바랍니다.
코드:
(defun c:GetLayer ( / ent layer)
; 사용자에게 객체 선택을 요청합니다.
(setq ent (car (entsel "\n객체를 선택하세요: ")))
; 객체가 선택되었는지 확인합니다.
(if ent
(progn
; 선택한 객체의 레이어를 가져옵니다.
(setq layer (cdr (assoc 8 (entget ent))))
; 레이어를 출력합니다.
(princ (strcat "\n선택한 객체의 레이어: " layer))
)
; 객체가 선택되지 않았을 경우 메시지를 출력합니다.
(princ "\n객체가 선택되지 않았습니다.")
)
; 프로그램 종료
(princ)
)
세부 설명은 아래와 같습니다.
1. 함수 정의:
(defun c:GetLayer ( / )는 "GetLayer"라는 명령어를 정의합니다.
2. 객체 선택 요청:
(setq ent (car (entsel "\n객체를 선택하세요: "))):
entsel 함수는 사용자가 선택한 객체에 대한 엔티티 이름과 선택된 점을 반환합니다.
car 함수는 그 결과의 첫 번째 요소(즉, 엔티티 이름)를 추출합니다.
setq는 선택된 엔티티 이름을 ent 변수에 저장합니다.
3. 객체 선택 여부 확인:
(if ent:
ent 변수가 nil이 아니면 값이 존재합니다. 즉, 객체가 선택되었으면 then 절을 실행합니다.
4. 객체의 레이어 가져오기:
(setq layer (cdr (assoc 8 (entget ent)))):
entget 함수는 선택한 엔티티의 속성 리스트를 반환합니다.
assoc 함수는 속성 리스트에서 그룹 코드 8(레이어)을 찾습니다.
cdr 함수는 assoc 결과의 두 번째 요소(레이어 이름)를 반환합니다.
setq는 레이어 이름을 layer 변수에 저장합니다.
5. 레이어 출력:
(princ (strcat "\n선택한 객체의 레이어: " layer)):
strcat 함수는 문자열을 연결합니다.
princ 함수는 결과 문자열을 출력합니다.
6. 객체 선택 실패 메시지:
(princ "\n객체가 선택되지 않았습니다.")는 객체가 선택되지 않았을 경우 출력할 메시지입니다.
이 예제는 AutoLISP을 사용하여 선택된 객체의 레이어(Layer)를 가져오고 출력하는 기본적인 방법을 설명합니다.
사용방법은 위의 코드를 메모장에 작성하여, 원하는 이름.lsp파일로 저장 후 응용프로그램 로드를 사용할 수 있습니다.