ZCode AI 에이전트에 무료 FreeCAD 1.1과 MCP를 연결해, 명령 3번으로 컨트롤러 하우징 3D 설계부터 STEP·STL·DXF 제조파일 생성까지 자동화한 사용기다. 실무 DWG 검증과 FreeCAD 한글 경로 버그 발견 과정까지 담았다.
한 줄 요약: ZCode(Claude 계열 AI 코딩 에이전트)에 무료 FreeCAD 1.1과 MCP를 연결해서, "하우징 본체 만들어줘 → 베젤프레임 추가해줘 → STEP·STL·DXF로 저장해줘" 명령 3번으로 컨트롤러 하우징 설계부터 제조파일 4종 생성까지 갔다. 도중에 FreeCAD의 한글 경로 버그도 발견했다. KiCad 편(info/146)의 후속 실험이다.

▲ 최종 완성된 컨트롤러 하우징. 전면 베젤프레임이 돌출되어 있고 우측 벽에 케이블 슬롯이 보인다.
주인공은 위의 컨트롤러 하우징이다. 외형은 흔한 박스형 외함이지만, 외함 설계에서 빠질 수 없는 요소를 의도적으로 전부 넣었다.
거창한 제품이 아니라 의도적으로 단순한 크기의 실험이다. 다만 외함 설계의 필수 요소(부울연산 캐비티, 보스, 립, 슬롯)가 전부 들어가 있어서, 이게 되면 실제 제품 외함도 같은 방식으로 된다.
| 구성요소 | 역할 | 비용 |
|---|---|---|
| FreeCAD 1.1.3 | 3D CAD 본체 | 0원 (오픈소스 LGPL) |
| ODA File Converter 27.1 | DWG↔DXF 변환 | 0원 (무료 유틸리티) |
| freecad-mcp 0.1.22 | AI↔FreeCAD 연결 다리 | 0원 (오픈소스 MIT) |
| ZCode (AI 에이전트) | 설계 지시·검증·파일 생성 | 사용 중인 플랜 |
연결 구조는 이렇다. 참고로 저번 KiCad 편에서는 AI가 화면을 점유하는 문제 때문에 웹 모니터를 따로 만들어 붙였는데, FreeCAD MCP는 아예 구조가 다르다.
flowchart LR
AI["AI 에이전트 (ZCode)"] -- "MCP 도구 호출 (stdio JSON-RPC)" --> S["freecad-mcp 서버"]
S -- "XML-RPC localhost:9875" --> A["FreeCADMCP 애드온"]
A -- "Python API" --> M["3D 모델 (문서/객체)"]
M --> O["STEP / STL / DXF / FCStd"]
핵심은 AI가 화면을 보고 마우스를 움직이는 게 아니라, FreeCAD 내부의 Python API를 직접 호출한다는 것이다. 그래서 내가 컴퓨터를 쓰는 동안에도 뒤에서 설계가 진행된다. FreeCAD 창은 켜져 있기만 하면 된다.
문서를 만들고, 외부 박스(330×170×30)에서 내부 박스(320×160)를 부울연산으로 파낸 뒤, 네 모서리에 고정 보스를 심는다. 실제로 AI가 실행한 코드의 결과 로그다.
하우징 볼륨 mm3: 352307.0
BUILD OK

▲ 1단계 완료. 캐비티가 파이고 네 모서리에 보스가 서 있는 상태.
346×186×4 판에서 안쪽을 다시 파서 프레임(테두리 링)을 만들고 본체에 융합한다. 커버판이 앞으로 밀려 들어가 이 립에 걸리는 구조. 이어서 오른쪽 벽에 40×10mm 케이블 슬롯을 관통 절삭했다.
최종 볼륨 mm3: 402931.0
BUILD2 OK

▲ 2단계 완료. 전면 돌출 립과 우측 벽의 케이블 슬롯이 보인다.
마지막 명령 한 번에 제조파일 4종이 나온다.
EXPORT+SAVE OK
| 파일 | 크기 | 용도 |
|---|---|---|
| controller_housing.step | 39KB | 가공업체·조립 설계 교환 |
| controller_housing.stl | 69KB (바이너리 1,416면) | 3D 프린팅 |
| controller_housing_outline.dxf | 34KB | 2D 외곽 확인 |
| 컨트롤러_하우징.FCStd | 13KB | 다시 열어 편집하는 원본 |
▶ 파일명을 클릭하면 데모 산출물(샘플)을 다운로드할 수 있다. FCStd는 FreeCAD에서 그대로 열어 편집 가능.
STL은 파일 크기 346×186×34mm — 설계치와 정확히 일치한다. 저장된 FCStd를 다시 열어 부피를 재검증해도 402,931mm³로 동일했다.
데모만으로는 사용기가 아니니, 실제 업무 DWG 파일 두 개를 이 환경에 넣어봤다. DWG는 네이티브 지원이 아니라 무료 변환기(ODA)를 경유하는데, 설정을 마치고 나면 파일 열기가 그냥 열리는 것과 같다.
이번 테스트의 최대 수확. FreeCAD 1.1.3의 최신 DXF 가져오기(C++)는 파일 경로에 한글이 포함되면 에러 없이 빈 문서를 만든다. 같은 파일을 영문 경로에서 열면 76개 객체가 나오는데, 한글 경로에서는 0개다. GUI 탓이 아니라 importer 자체 문제임을 콘솔 모드로 재현해서 확인했다.
한글 경로(D:\MAXIGN\킬바 도안\킬바.dwg) → 내부변환 255KB 정상 → 가져오기 0객체
영문 사본(D:\...\kilba.dwg) → 내부변환 255KB 정상 → 가져오기 76객체
해결은 의외로 간단했다. 구버전 방식의 레거시 가져오기(Python 기반)로 전환하니 한글 경로에서도 정상(59객체)이었다. 덧붙여 도면의 치수 숫자가 안 보이는 문제도 있었는데, 이건 버그가 아니라 FreeCAD가 기본값에서 텍스트·치수를 아예 가져오지 않기 때문(skipping texts...가 로그에 그대로 찍힌다)이었다. 설정을 켜고 MTEXT 서식 코드만 정리하니 실제 수치가 화면에 떴다.
무료 소프트웨어를 실무에 쓸 때 중요한 건 "버그가 있냐 없냐"가 아니라 버그를 30분 만에 원인까지 좁혀내고 우회할 수 있느냐다. 소스와 설정이 모두 공개되어 있어서 가능했다.
반대로 "2D DWG를 하루 종일 수정하는 작업"이 목적이라면 아직 AutoCAD의 편의를 따라가긴 어렵다. 도구를 고를 때는 목적을 먼저 볼 것.
설치 절차, 설정 파일 위치, 트러블슈팅 전체는 기술 문서로 따로 정리해두었다. 본문에서 다루지 않은 세부는 그 문서를 참고하면 된다.
테스트 환경: Windows 11 / FreeCAD 1.1.3 / ODA File Converter 27.1.0 / freecad-mcp 0.1.22 / 통합 테스트 10항목 통과
| 이전 | FreeCAD + MCP AI 제어 환경 구축 가이드 | lordly | 2026-09-07 |
|---|---|---|---|
| 다음 | 부품 16개짜리 기판, 명령 몇 마디로 여기까지 — AI로 회로설계·PCB 설계 자동화 사용기 | 2026-09-07 |