오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 객체 색상 변경하기
오토캐드 (AutoCAD) AutoLisp 연습예제 - 선택한 객체 색상 변경하기
선택한 객체 색상 변경하기
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. 이 코드를 AutoCAD의 VisualLISP 편집기에서 입력하고, 저장 후 로드합니다.
- 2. 명령창에 ChangeColor를 입력 합니다.
- 3. 사각형의 가로 길이와 세로 길이, 위치를 입력하여 사각형을 그립니다.
- 사용 방법2:
- 1. 원하는 이름.lsp 파일을 만들고, 위의 코드를 작성합니다.
- 2. Appload 명령을 이용하여 (원하는 이름.lsp)파일을 선택하여 load 합니다.
- 3. 명령창에 ChangeColor를 입력 합니다.
- 4. 사각형의 가로 길이와 세로 길이, 위치를 입력하여 사각형을 그립니다.
- 이 코드를 활용하면 쉽게 사각형과 응용한 사각형을 그리고, AutoLisp을 연습할 수 있습니다.