AutoLisp

[AutoLisp]오토캐드 AutoLisp 강좌 예제 - 선택한 블럭(Block)들의 위치를 출력하기

데브프로그라 2024. 10. 9. 22:20
반응형

AutoLISP를 사용하여 선택한 블록의 위치 출력합니다.

  1. AutoCAD에서 AutoLISP 실행:
    • 명령줄에서 VLISP를 입력하여 Visual LISP 편집기를 열어 아래의 코드를 작성합니다.
  2. LISP 코드 작성: 아래의 코드는 선택한 블록의 위치를 가져와 출력하는 간단한 예입니다.
(defun C:GetBlockPosition ( / selSet blkName blkHandle blkEnt blkInsertPt) ;; 선택한 블록 집합 만들기
(setq selSet (ssget "_I" '((0 . "INSERT")))) ;; INSERT는 블록을 의미
(if selSet (progn ;; 선택한 블록 정보 가져오기
(setq blkEnt (ssname selSet 0)) ;; 선택된 첫 번째 블록 가져오기
(setq blkName (cdr (assoc 2 (entget blkEnt)))) ;; 블록 이름
(setq blkInsertPt (cdr (assoc 10 (entget blkEnt)))) ;; 블록의 삽입점 좌표
(princ (strcat "\nBlock Name: " blkName)) ;; 블록 이름 출력
(princ (strcat "\nInsertion Point: " (rtos (car blkInsertPt)) ", " (rtos (cadr blkInsertPt)) ", " (rtos (caddr blkInsertPt)))) ;; 좌표 출력 )
(princ "\nNo block selected or invalid selection.") ;; 선택되지 않았을 때 )
(princ)
)

GetBlockPosition.lsp
0.00MB


코드 설명:

  • ssget "_I"는 현재 선택된 객체(블록)를 가져오는 함수입니다.
  • entget은 객체의 데이터 리스트를 반환하며, 여기서 삽입점 좌표는 assoc 10을 사용하여 얻을 수 있습니다.
  • princ는 결과를 명령줄에 출력하는 함수입니다.

실행 방법:

  1. AutoCAD 명령줄에 VLISP를 입력하여 LISP 편집기를 엽니다.
  2. 새 파일을 만들고 위 코드를 붙여넣습니다.
  3. 파일을 저장한 후, 편집기에서 코드를 로드합니다.
  4. AutoCAD 명령줄에서 GetBlockPosition을 입력하면 선택한 블록의 이름과 삽입점 좌표가 출력됩니다.

실행 방법 2:

  • AutoCAD에서 AutoLisp 로드 Appload 자세히 알아보기
  • 이 방법을 통해 AutoCAD에서 선택한 블록의 위치를 간단하게 확인할 수 있습니다.

    반응형

    /* 코드복사 버튼 */ pre { position: relative; overflow: visible; } pre .copy-button { opacity: 0; position: absolute; right: 8px; top: 4px; padding: 6px 18px; color: rgb(255, 255, 255); background: rgba(255, 223, 0, 0.6); border-radius: 5px; transition: opacity .3s ease-in-out; } pre:hover .copy-button { opacity: 1; } pre .copy-button:hover { color: #eee; transition: all ease-in-out 0.3s; } pre .copy-button:active { color: #33f; transition: all ease-in-out 0.1s; } .copy-message:before { content: attr(copy-message); position: absolute; left: -95px; top: 0px; padding: 6px 18px; color: #fff; background: rgba(255, 223, 0, 0.6); border-radius: 5px; } /* 코드복사 버튼 END */