오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 객체 색상 변경하기

 오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 객체 색상 변경하기

(색상 변경할 때 AutoCAD 색상 참조하세요.)


선택한 객체 색상 변경하기

AutoLisp을 사용하다 보면 객체의 색상을 변경해야 할 경우가 생깁니다.

이 코드는 단지 객체의 색상 변경을 이용하는 것이 아니라, 색상 변경을 하는 것을 배우기 위함입니다.

객체를 선택하고, 1 ~ 256 색상 (AutoCAD 색상)을 기준으로 색상 번호를 입력하여 변경하는 코드입니다.

➧ 주의 : 색상이 없는 객체는 안됩니다. 이 부분은 숙제로 해야 할 것 같습니다.

(defun c:ChangeColor ()

  (setq ent (car (entsel "\n색상을 변경할 객체를 선택하세요: "))) ; 객체 선택

  (if ent

    (progn

      (setq newColor (getint "\n새 색상 번호를 입력하세요 (1-256): ")) ; 새 색상 번호 입력

      (if (and (>= newColor 1) (<= newColor 256)) ; 색상 번호 유효성 검사

        (progn

          (entmod (subst (cons 62 newColor) (assoc 62 (entget ent)) (entget ent))) ; 색상 변경

          (princ "\n객체의 색상이 변경되었습니다."))

        (princ "\n유효하지 않은 색상 번호입니다. 1에서 256 사이의 값을 입력하세요."))

    )

    (princ "\n객체가 선택되지 않았습니다.")

  )

  (princ) ; 명령 종료

)

코드 설명

  • 객체 선택: entsel 함수를 사용하여 사용자가 색상을 변경할 객체를 선택하도록 요청합니다. 선택한 객체의 엔티티 이름은 ent 변수에 저장됩니다.
  • 새 색상 입력: getint 함수를 사용하여 사용자가 새 색상 번호를 입력하도록 요청합니다. 색상 번호는 newColor 변수에 저장됩니다.
  • 색상 번호 유효성 검사: 입력된 색상 번호가 1에서 256 사이인지 확인합니다.
  • 색상 변경: entmod 함수를 사용하여 선택한 객체의 색상을 변경합니다. subst 함수를 사용하여 기존 색상 값을 새 색상 값으로 대체합니다.
  • 결과 출력: 색상이 성공적으로 변경되었음을 알리는 메시지를 출력합니다. 유효하지 않은 색상 번호가 입력된 경우에도 적절한 메시지를 출력합니다.
  • 명령 종료: 마지막에 princ를 호출하여 명령이 종료되었음을 나타냅니다.

사용 방법1:

  1. 1. 이 코드를 AutoCAD의 VisualLISP 편집기에서 입력하고, 저장 후 로드합니다.
  2. 2. 명령창에 ChangeColor를 입력 합니다.
  3. 3. 사각형의 가로 길이와 세로 길이, 위치를 입력하여 사각형을 그립니다.


  4. 사용 방법2:
  5. 1. 원하는 이름.lsp 파일을 만들고, 위의 코드를 작성합니다.
  6. 2. Appload 명령을 이용하여 (원하는 이름.lsp)파일을 선택하여 load 합니다.
  7. 3. 명령창에 ChangeColor를 입력 합니다.
  8. 4. 사각형의 가로 길이와 세로 길이, 위치를 입력하여 사각형을 그립니다.
  9. 이 코드를 활용하면 쉽게 사각형과 응용한 사각형을 그리고, AutoLisp을 연습할 수 있습니다.

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

AutoLisp 강좌 예제 - 선택한 원들을 폴리선으로 변환하기