AutoCAD 도면 작도 자동화 도구 소개 영상
문제
판금과 제관 도면을 그리는 실무에는 같은 형상이 끝없이 반복됩니다. 폭과 높이가 다른 사각 판재에 볼트홀 두세 개, 지름과 PCD가 다른 원형 플랜지, 밑변과 높이가 다른 삼각 브래킷을 하루에도 수십 번씩 새로 그립니다. 형상 자체는 단순하지만 외곽선을 긋고 홀을 정확한 위치에 배치하고 중심선과 치수선을 넣고 재질·두께·수량 표제까지 다는 과정을 손으로 반복하면 시간이 쌓입니다.
의뢰인이 원한 것은 특별한 도면이 아니라 이 반복을 없애는 일이었습니다. 수치 몇 개만 입력하면 표준 형상이 지금 열려 있는 도면 위에 정확히 그려지는 도구, 그것도 새 창이나 별도 프로그램이 아니라 늘 쓰던 CAD 안에서 바로 도는 도구여야 했습니다.
조건은 까다로웠습니다. 이 도구는 AutoCAD 2022와 국산 CADian 2026 양쪽에서 똑같이 동작해야 했습니다. 두 CAD는 명령어 체계가 비슷하지만 내부 동작에는 미묘한 차이가 있어서 한쪽에서만 되는 기능을 쓰면 다른 쪽에서 깨집니다. 게다가 자동화 도구가 사용자의 원래 도면 설정을 흐트러뜨리면 안 됐습니다. 치수 글자 크기나 스냅 설정이 도구 실행 뒤에 바뀌어 있으면 실무자는 그 도구를 신뢰하지 않습니다.
접근
핵심은 CAD 밖으로 나가지 않는 것이었습니다. 별도 런타임이나 외부 연동 없이 CAD에 내장된 AutoLISP과 DCL만으로 도구 전체를 구성했습니다. 명령어를 실행하면 수치 입력창이 뜨고 값을 넣고 도면에서 삽입점을 클릭하면 그 자리에 형상이 그려집니다.
기능
수치 입력창과 삽입점 클릭으로 끝나는 작도
사각(HGRECT), 원형(HGCIRCLE), 삼각(HGTRI) 세 형상마다 DCL 입력창을 두어 폭·높이·홀 지름·홀 개수·PCD·시작각 같은 값을 받습니다. 확인을 누르고 도면에서 기준점을 한 번 클릭하면 그 위치를 기준으로 외곽선과 홀이 현재 도면에 바로 그려집니다. 자주 쓰는 형상은 SS·CC·TT 단축 명령으로 곧장 부릅니다.
도형을 그리는 방식에서 안정성이 갈립니다. 도형 생성은 entmake로 처리했습니다. entmake는 순수 LISP 함수여서 ActiveX나 COM 같은 외부 의존이 없고 실행 중 사용자의 시스템 변수를 건드리지 않아 부작용이 없습니다. 반면 치수선처럼 entmake로 안전하게 만들기 어려운 복합 객체는 command 방식으로 그렸습니다. 도형은 entmake, 치수는 command이라는 역할 분담이 두 CAD 호환성의 바탕이 됐습니다.
기능
도형은 entmake, 치수는 command로 나눈 순수 LISP 작도
선·원·호·폴리라인은 entmake로 직접 생성해 시스템 변수 변경이나 스냅 부작용을 피했습니다. 치수는 표준 치수 명령으로 그리되 실행 전후로 치수 관련 변수를 저장하고 되돌립니다. Excel 연동이나 ActiveX처럼 CADian에서 동작이 보장되지 않는 기능은 처음부터 쓰지 않았습니다.
출력물은 정해진 레이어로 분리됩니다. 외곽선, 홀, 중심선, 치수, 표제 텍스트가 각각 전용 레이어에 놓이도록 했고 도구가 그 레이어를 자동으로 만들되 이미 같은 이름의 레이어가 있으면 색이나 선종을 건드리지 않고 그대로 재사용합니다. 중심선에 쓰는 CENTER 선종은 CAD 환경에 따라 없을 수 있어서 로드에 실패하면 실선으로 조용히 대체하고 작도를 계속합니다.
기능
전용 레이어 자동 관리와 사용자 도면 보호
외곽선·홀·중심선·치수·표제를 다섯 개 전용 레이어로 나눠 정리합니다. 도구는 필요한 레이어를 자동 생성하되 기존 레이어는 속성을 바꾸지 않고 재사용합니다. 명령이 끝나거나 도중에 취소되면 오류 핸들러가 시스템 변수를 원래대로 되돌려, 도구를 쓴 뒤에도 사용자 도면 설정이 그대로 유지됩니다.
작도 전에는 홀이 외곽선을 벗어나는 조합을 미리 걸러냅니다. 홀 중심 거리가 홀 반지름보다 작거나 두 홀이 서로 겹치는 수치를 넣으면 그리기 전에 경고로 막습니다. 여러 형상을 한 번에 배치할 때는 CSV나 엑셀 표 한 장을 읽어 격자로 늘어놓습니다. 잘못된 행이 섞여 있어도 그 행만 건너뛰고 나머지를 끝까지 그린 뒤 성공과 실패 건수를 보고합니다.
기능
사전 검증과 CSV 일괄 작도
수치가 기하학적으로 성립하지 않으면 작도 전에 막아 잘못된 도면이 나오지 않게 했습니다. 대량 작업은 CSV 파일 한 장으로 여러 형상을 격자 배치하며 헤더와 빈 행은 자동으로 건너뛰고 파싱에 실패한 행은 격리한 뒤 완료 리포트를 남깁니다. 일괄 배치 전체가 한 번의 Undo로 취소됩니다.
전체 실행 흐름은 다음과 같습니다.
글로 요약하면 이렇습니다. 실무자는 입력창에 수치를 넣고 도면에서 한 점을 클릭합니다. 도구는 그 수치가 성립하는지 먼저 검증하고 entmake로 외곽선과 홀 좌표를 계산해 그린 뒤, 중심선과 치수와 표제를 후처리로 얹어 지금 열린 도면에 완성합니다. 여러 형상을 한꺼번에 그릴 때는 같은 파이프라인을 CSV 표가 대신 먹여 줍니다.
결과
손으로 반복하던 표준 형상 작도가 수치 입력과 클릭 한 번으로 줄었습니다. 사각·원형·삼각 형상과 홀 배치, 중심선, 치수, 재질·두께·수량 표제가 정해진 레이어에 정리된 채로 현재 도면에 바로 나옵니다. CSV 표 한 장이면 여러 형상을 격자로 한 번에 배치할 수도 있습니다.
무엇보다 실무 환경에 녹아들도록 만든 점이 중요했습니다. 도구는 파일 하나로 AutoCAD와 CADian 양쪽에서 동작하고 사용자의 도면 설정을 건드리지 않으며 잘못된 수치는 그리기 전에 막습니다. 자동화 도구가 원래 작업을 방해하지 않아야 실무자가 그 도구를 계속 쓴다는 것을 이 프로젝트가 다시 확인시켜 주었습니다.
이 도구를 만들며 내린 기술적 결정들은 아래 글에서 더 자세히 풀었습니다.
- entmake로 도형, command로 치수: 순수 LISP 작도와 부작용 없는 도형 생성
- AutoCAD와 CADian 양립 설계: 두 CAD에서 파일 하나로 도는 법
- 사용자 도면을 지키는 오류 핸들러: 시스템 변수 저장과 복원
- DCL 못 찾음을 없앤 내장 DCL: 입력창 정의를 LISP에 심는 설계
- 견고한 CSV 일괄 작도: 잘못된 행 격리와 완주 리포트
- 한글 CAD 환경의 인코딩 함정: CP949와 빌드 변환
자주 묻는 질문
이 도구는 어떤 CAD에서 동작하나요?
AutoCAD 2022와 CADian 2026 양쪽에서 같은 파일 하나로 동작하도록 만들었습니다. 두 CAD 모두 AutoLISP과 DCL을 지원하므로, 한쪽 전용 함수나 ActiveX 연동을 쓰지 않고 두 환경 공통의 표준 함수만으로 구성했습니다.
자동화 도구가 제 도면 설정을 바꾸지는 않나요?
바꾸지 않습니다. 도형은 시스템 변수를 건드리지 않는 entmake로 그리고 치수처럼 변수를 잠시 바꿔야 하는 작업은 실행 전에 값을 저장했다가 끝나면 원래대로 되돌립니다. 명령이 도중에 취소돼도 오류 핸들러가 설정을 복원하므로 도구를 쓰기 전과 같은 상태가 유지됩니다.
여러 형상을 한 번에 그릴 수 있나요?
네. CSV나 엑셀 표에 형상 종류와 치수를 행마다 적어 넣으면 한 번의 명령으로 격자 배치합니다. 헤더와 빈 행은 자동으로 건너뛰고 수치가 잘못된 행은 그 행만 빼고 나머지를 끝까지 그린 뒤 성공과 실패 건수를 알려 줍니다. 배치 전체는 한 번의 Undo로 취소됩니다.
잘못된 치수를 넣으면 어떻게 되나요?
작도 전에 검증이 걸러 줍니다. 홀 중심이 외곽선 밖으로 나가거나 홀끼리 겹치는 수치처럼 도면으로 성립할 수 없는 조합은 그리기 전에 경고로 막아, 깨진 도면이 만들어지지 않게 했습니다.