AutoLisp 강좌 예제 - AutoCAD에서 블럭(Block)의 레이어, 위치, 블럭 이름을 표시


AutoLISP는 AutoCAD에서 매우 유용하게 사용되는 프로그래밍 언어입니다. 

선택한 블록의 레이어(Layer) 이름, 위치(Location), 블록 이름(Block Name) 등을 확인하는 스크립트를 작성하는 방법을 설명하겠습니다.

아래의 코드를 메모장 또는 Text 편집기에 작성하여 파일명을 test.lsp로 저장합니다.

(defun c:BlockInfo (/ ent entdata blklayer blkname blkpos)

  ;; 사용자에게 블록 선택을 요청합니다

  (setq ent (entsel "\n블록을 선택하세요: "))

  (if ent

    (progn

      ;; 엔터티 데이터를 가져옵니다

      (setq entdata (entget (car ent)))

      ;; 블록의 레이어 이름을 가져옵니다

      (setq blklayer (cdr (assoc 8 entdata)))

      

      ;; 블록의 이름을 가져옵니다

      (setq blkname (cdr (assoc 2 entdata)))

      

      ;; 블록의 위치를 가져옵니다

      (setq blkpos (cdr (assoc 10 entdata)))

      

      ;; 결과를 출력합니다

      (princ (strcat "\n레이어 이름: " blklayer))

      (princ (strcat "\n블록 이름: " blkname))

      (princ (strcat "\n블록 위치: " (rtos (car blkpos) 2 2) ", " (rtos (cadr blkpos) 2 2)))

    )

  )

  (princ)

)

이 스크립트는 선택된 블록의 레이어 이름, 블록 이름, 위치 좌표를 가져와 화면에 출력합니다. 소스코드의 설명은 다음과 같습니다:

entsel 함수로 사용자가 블록을 선택하도록 요청합니다.

entget 함수를 사용해 선택한 블록의 데이터를 가져옵니다.

assoc 함수를 통해 엔터티 데이터에서 레이어 이름(group code 8), 블록 이름(group code 2), 블록 위치(group code 10)를 추출합니다.

추출된 데이터를 princ 함수를 사용하여 사용자에게 출력합니다.

이 코드를 AutoCAD의 LISP 콘솔에 붙여 넣고 실행하면 선택한 블록의 정보가 출력됩니다. 필요에 따라 이 스크립트를 수정하여 다양한 정보를 가져오거나 다른 기능을 추가할 수 있습니다.




사용방법:

1. AutoCAD에서 Appload 명령을 입력합니다.

2. test.lsp 파일을 찾아 load합니다.

3. BlockInfo 명령을 입력하여, 블럭(Block)을 선택합니다.

4. Command Line에서 블럭의 레이어, 위치, 블럭이름을 확인합니다.