오토캐드에서 객체 색상을 반복해서 변경해야 한다면 AutoLISP를 이용해 작업을 자동화할 수 있습니다.
AutoLISP에서는 entget으로 객체 정보를 가져온 뒤 DXF 그룹 코드 62의 값을 변경하고 entmod로 다시 적용하면 객체의 ACI 색상을 바꿀 수 있습니다.
다만 실제 도면에서는 객체가 BYLAYER 상태라 그룹 코드 62가 없거나, True Color 값인 그룹 코드 420이 함께 존재하는 경우도 있습니다.
이번 글에서는 이러한 경우까지 고려해 선택한 객체의 색상을 안전하게 변경하는 방법을 알아보겠습니다.
1. AutoLISP에서 객체 색상을 변경하는 원리
기본적인 흐름은 다음과 같습니다.
객체 선택
↓
entget
↓
객체 정보 가져오기
↓
색상 정보 확인
↓
DXF 코드 62 변경
↓
entmod
↓
변경 적용
객체의 레이어를 수정할 때와 기본 원리는 비슷합니다.
객체 데이터를 가져온 뒤 원하는 DXF 값을 수정하고 다시 적용하는 방식입니다.
레이어 변경 원리가 궁금하다면 아래 글도 함께 참고할 수 있습니다.
오토캐드 리습 레이어 변경하기|entget·entmod로 객체 레이어 바꾸는 방법
https://infopicklab.tistory.com/21
2. DXF 그룹 코드 62는 객체 색상 정보
AutoLISP에서
(entget ent)
을 실행하면 객체의 여러 속성이 리스트 형태로 반환됩니다.
색상이 직접 지정된 객체라면 다음과 같은 값이 포함될 수 있습니다.
(62 . 1)
여기에서 62는 객체의 ACI 색상 정보를 나타냅니다.
예를 들어
(62 . 1)
은 ACI 색상 번호 1, 즉 빨간색을 의미합니다.
3. ACI 색상 번호 알아보기
AutoCAD의 기본 ACI 색상 번호 중 자주 사용하는 값은 다음과 같습니다.
색상 번호색상
| 1 | 빨강 |
| 2 | 노랑 |
| 3 | 초록 |
| 4 | 청록 |
| 5 | 파랑 |
| 6 | 자홍 |
| 7 | 흰색 또는 검은색 |
색상 번호 7은 화면 배경 등에 따라 흰색 또는 검은색으로 표현될 수 있습니다.
추가로 기억해두면 좋은 특수값도 있습니다.
| 값 | 의미 |
| 0 | BYBLOCK |
| 1~255 | ACI 색상 |
| 256 | BYLAYER |

4. assoc 62로 현재 색상 정보 확인하기
객체 데이터를 data라는 변수에 저장했다고 가정해보겠습니다.
(setq data (entget ent))
현재 객체의 ACI 색상 정보를 찾으려면 다음처럼 사용할 수 있습니다.
(assoc 62 data)
객체 색상이 빨간색으로 직접 지정되어 있다면 다음과 같은 결과가 나올 수 있습니다.
(62 . 1)
하지만 여기서 중요한 점이 있습니다.
객체가 기본적인 BYLAYER 색상을 사용하고 있다면 그룹 코드 62가 객체 데이터에 아예 존재하지 않을 수 있습니다.
이 경우
(assoc 62 data)
의 결과는
nil
이 될 수 있습니다.
따라서 실제 리습에서는 62가 있는 경우와 없는 경우를 모두 처리해야 합니다.
5. 기존 색상값이 있다면 subst로 교체
객체 데이터에 그룹 코드 62가 이미 있다면 subst를 이용해 기존 색상 정보를 새로운 값으로 바꿀 수 있습니다.
예를 들어 현재 색상이
(62 . 3)
이라면 초록색입니다.
이를 빨간색으로 변경하려면
(subst
(cons 62 1)
(assoc 62 data)
data
)
를 사용할 수 있습니다.
결과적으로
(62 . 3)
이
(62 . 1)
로 변경됩니다.
6. 그룹 코드 62가 없다면 새로 추가해야 한다
BYLAYER 상태처럼 62가 없는 객체에서는 단순히 subst만 사용할 수 없습니다.
기존에 교체할 값 자체가 없기 때문입니다.
따라서 먼저 확인합니다.
(if (assoc 62 data)
62가 있다면 기존 값을 교체하고,
(subst
(cons 62 1)
(assoc 62 data)
data
)
없다면 새로운 (62 . 1) 항목을 추가합니다.
(append
data
(list (cons 62 1))
)
이 처리가 있어야 BYLAYER 상태의 객체도 빨간색처럼 직접 지정된 ACI 색상으로 변경할 수 있습니다.
7. True Color 그룹 코드 420도 확인해야 한다
AutoCAD에서는 ACI 색상 외에도 True Color를 사용할 수 있습니다.
이때 객체 데이터에는 그룹 코드 420이 포함될 수 있습니다.
문제는 객체에 62와 420이 동시에 존재하면서 서로 다른 색상을 나타내는 경우입니다.
이 경우 AutoCAD에서는 True Color 값인 420이 우선될 수 있습니다.
따라서 ACI 그룹 코드 62를 이용해 객체 색상을 확실하게 변경하려면 기존 420 값을 제거하는 것이 안전합니다.
예를 들어 다음처럼 처리할 수 있습니다.
(if (assoc 420 data)
(setq data
(vl-remove
(assoc 420 data)
data
)
)
)
이후 그룹 코드 62를 변경하면 ACI 색상을 적용하기가 훨씬 명확해집니다.

8. 선택한 객체를 빨간색으로 변경하는 완성 코드
앞에서 알아본 내용을 모두 적용하면 다음과 같이 작성할 수 있습니다.
(defun c:CHGCOLOR (/ ent data)
(setq ent
(car
(entsel "\n색상을 변경할 객체를 선택하세요: ")
)
)
(if ent
(progn
(setq data (entget ent))
;; True Color 값이 있으면 제거
(if (assoc 420 data)
(setq data
(vl-remove
(assoc 420 data)
data
)
)
)
;; ACI 색상 코드 62 처리
(if (assoc 62 data)
;; 기존 62가 있으면 빨간색으로 교체
(setq data
(subst
(cons 62 1)
(assoc 62 data)
data
)
)
;; 62가 없으면 새로 추가
(setq data
(append
data
(list (cons 62 1))
)
)
)
;; 변경된 객체 정보 적용
(entmod data)
(princ "\n객체 색상이 빨간색으로 변경되었습니다.")
)
(princ "\n객체가 선택되지 않았습니다.")
)
(princ)
)
명령어는
CHGCOLOR
입니다.
명령을 실행한 뒤 객체를 선택하면 선택한 객체의 색상이 ACI 빨간색으로 변경됩니다.
9. 코드 흐름 이해하기
완성 코드를 단계별로 보면 어렵지 않습니다.
먼저 객체를 선택합니다.
(setq ent
(car
(entsel "\n색상을 변경할 객체를 선택하세요: ")
)
)
선택한 객체 정보를 가져옵니다.
(setq data (entget ent))
True Color 값인 420이 있는지 확인합니다.
(assoc 420 data)
존재하면 제거합니다.
(setq data
(vl-remove
(assoc 420 data)
data
)
)
그다음 ACI 색상 코드 62를 확인합니다.
(assoc 62 data)
기존 값이 있다면
(subst
(cons 62 1)
(assoc 62 data)
data
)
로 빨간색 값인 1로 교체합니다.
그룹 코드 62가 없다면
(append
data
(list (cons 62 1))
)
로 새 색상 정보를 추가합니다.
마지막으로
(entmod data)
를 실행하면 변경된 데이터가 실제 객체에 적용됩니다.
10. 다른 색상으로 변경하려면?
현재 코드에서는 다음 부분 때문에 빨간색으로 변경됩니다.
(cons 62 1)
여기에서 마지막 숫자만 바꾸면 됩니다.
노란색:
(cons 62 2)
초록색:
(cons 62 3)
청록색:
(cons 62 4)
파란색:
(cons 62 5)
자홍색:
(cons 62 6)
예를 들어 파란색으로 변경하고 싶다면 코드 안의
(cons 62 1)
을
(cons 62 5)
로 변경하면 됩니다.
11. 다시 BYLAYER로 돌리고 싶다면?
객체에 직접 지정한 ACI 색상을 사용하지 않고 다시 레이어 색상을 따르게 만들고 싶은 경우에는 BYLAYER를 사용하면 됩니다.
ACI에서 BYLAYER 값은
256
입니다.
따라서 상황에 따라
(cons 62 256)
을 사용할 수 있습니다.
다만 객체 속성과 기존 색상 데이터 상태에 따라 처리 방식이 달라질 수 있으므로 실제 업무용 리습에서는 테스트 도면에서 먼저 확인하는 것이 좋습니다.
12. BYBLOCK은 무엇일까?
ACI 색상값
0
은 BYBLOCK을 의미합니다.
BYBLOCK은 주로 블록 내부 객체에서 활용되며 블록 참조의 속성에 따라 표시 특성이 결정될 수 있습니다.
따라서 단순히
(cons 62 0)
이라고 변경하는 것과 일반적인 색상 번호를 직접 지정하는 것은 의미가 다릅니다.
처음 AutoLISP 색상 변경을 공부할 때는 먼저 1~7 같은 기본 ACI 색상을 이용해 원리를 익히는 것이 이해하기 쉽습니다.
13. 여러 객체의 색상을 한꺼번에 바꾸려면?
이번 예제는 entsel을 사용해 객체 하나만 선택합니다.
여러 객체의 색상을 한꺼번에 변경하고 싶다면 ssget을 이용해 선택 집합을 만든 뒤 각 객체에 같은 색상 변경 과정을 반복할 수 있습니다.
즉 기본 원리는 그대로입니다.
ssget
↓
여러 객체 선택
↓
각 객체 entget
↓
420 확인 및 제거
↓
62 변경 또는 추가
↓
entmod
여러 객체를 선택하는 ssget의 기본 사용법은 아래 글에서 확인할 수 있습니다.
오토캐드 리습 여러 객체 선택하기|ssget으로 원하는 객체만 골라내는 방법
https://infopicklab.tistory.com/7

14. 핵심 정리
AutoLISP로 객체 색상을 변경할 때 핵심은 DXF 그룹 코드 62입니다.
entget
→ 객체 정보 가져오기
assoc 62
→ ACI 색상 정보 찾기
subst
→ 기존 색상값 변경
append
→ 62가 없을 때 새 색상 정보 추가
entmod
→ 변경 내용 적용
그리고 실제 도면에서는 두 가지를 추가로 기억하면 좋습니다.
첫째, BYLAYER 객체에서는 그룹 코드 62가 없을 수 있습니다.
따라서 subst만 사용하면 색상이 변경되지 않을 수 있습니다.
둘째, True Color 그룹 코드 420이 있으면 ACI 62보다 우선할 수 있습니다.
ACI 색상으로 확실하게 변경하려면 기존 420 값을 먼저 처리하는 것이 중요합니다.
정리하면 안전한 흐름은 다음과 같습니다.
객체 선택
↓
entget
↓
420 확인
↓
True Color가 있으면 제거
↓
62 확인
↓
있으면 교체
없으면 추가
↓
entmod
↓
색상 변경 완료
이 원리를 이해하면 빨간색뿐 아니라 다양한 ACI 색상으로 변경하거나 여러 객체의 색상을 일괄 변경하는 리습으로도 확장할 수 있습니다.
참고자료
AutoLISP 객체 데이터와 색상 그룹 코드의 동작은 Autodesk 공식 문서를 기준으로 확인했습니다.
- Autodesk DXF 일반 그룹 코드
https://help.autodesk.com/cloudhelp/2021/ENU/AutoCAD-DXF/files/GUID-3610039E-27D1-4E23-B6D3-7E60B22BB5BD.htm - Autodesk AutoLISP entmod 공식 문서
https://help.autodesk.com/cloudhelp/2023/ENU/AutoCAD-AutoLISP-Reference/files/GUID-C7D27797-247E-49B9-937C-0D8C58F4C832.htm - Autodesk AutoLISP entget 공식 문서
https://help.autodesk.com/cloudhelp/2024/ENU/AutoCAD-LT-AutoLISP/files/GUID-EF8C5586-BA1F-4EA6-BAD1-6BA792B601F0.htm
AutoCAD 버전이나 객체 종류에 따라 세부 동작에 차이가 있을 수 있으므로 업무용 도면에 적용하기 전에는 테스트 도면에서 먼저 확인하는 것이 좋습니다.
'IT·인터넷' 카테고리의 다른 글
| 윈도우11 블루투스가 안 될 때 순서대로 해결하는 방법 (0) | 2026.08.30 |
|---|---|
| 윈도우11 와이파이 연결이 안 될 때 순서대로 해결하는 방법 (0) | 2026.08.30 |
| 오토캐드 리습 자동로드 방법|APPLOAD로 LSP 매번 불러오지 않게 설정하기 (0) | 2026.08.26 |
| 오토캐드 리습으로 선 그리기|getpoint와 command로 LINE 자동화하기 (0) | 2026.08.22 |
| 오토캐드 리습 사용자 입력받기|getpoint로 좌표 지정하는 방법 (0) | 2026.08.22 |