캐드(AutoCAD)에서 AutoLisp 강좌 예제- AutoCAD 객체 선택 현재(Current) Layer로 변경

오토캐드(AutoCAD)에서 AutoLISP을 사용하여 선택한 객체의 레이어로현재 레이어 변경하기.

아래는 해당 기능을 구현한 AutoLISP 코드입니다.

명령어 (c:ChangeLayerToSelectedObjectLayer)는 원하는 이름으로 변경하여 작성합니다.
(defun c:ChangeLayerToSelectedObjectLayer ()
  (setq selObj (car (entsel "\n객체를 선택하세요: ")))  ; 객체 선택
  (if selObj
    (progn
      (setq objData (entget selObj))  ; 선택된 객체의 데이터를 가져옴
      (setq objLayer (cdr (assoc 8 objData)))  ; 객체의 레이어 이름을 추출
      (setvar 'clayer objLayer)  ; 현재 레이어를 객체의 레이어로 변경
      (princ (strcat "\n현재 레이어가 " objLayer " 로 변경되었습니다."))
    )
    (princ "\n객체를 선택하지 않았습니다.")
  )
  (princ)
)

(princ "\nChangeLayerToSelectedObjectLayer 명령이 로드되었습니다. 명령을 실행하려면 'ChangeLayerToSelectedObjectLayer' 를 입력하세요.")
(princ)

코드 설명:
entsel 함수는 사용자가 선택할 객체를 선택하도록 요청합니다.
entget 함수는 선택된 객체의 속성 정보를 반환합니다.
assoc 8은 객체의 레이어 이름을 나타내는 8번 그룹 코드를 찾습니다.
setvar 함수를 사용하여 현재 레이어(clayer)를 선택한 객체의 레이어로 변경합니다.
선택된 객체의 레이어로 현재 레이어가 변경되면, 사용자에게 변경된 레이어를 알려주는 메시지를 출력합니다.


사용 방법1:
이 코드를 AutoCAD의 LISP 편집기에서 입력하고, 저장 후 로드합니다.
명령창에 ChangeLayerToSelectedObjectLayer를 입력하면, 객체를 선택하라는 메시지가 나타납니다.
객체를 선택하면, 선택한 객체의 레이어로 현재 레이어가 변경됩니다.


사용 방법2:
원하는 이름.lsp 파일을 만들고, 위의 코드를 작성합니다.
Appload 명령을 이용하여 (원하는 이름.lsp)파일을 선택하여 load 합니다.
명령창에 ChangeLayerToSelectedObjectLayer를 입력하면, 객체를 선택하라는 메시지가 나타납니다.
객체를 선택하면, 선택한 객체의 레이어로 현재 레이어가 변경됩니다.

이 코드를 활용하면 쉽게 객체의 레이어로 현재 레이어를 변경할 수 있습니다.