컨트롤러 하우징, 명령 3번으로 여기까지 — AI로 3D 설계·제조파일까지 자동화한 사용기 (FreeCAD 편)

웰컴스 조회 25

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)의 후속 실험이다.

이 글의 주인공

최종 완성 모델

▲ 최종 완성된 컨트롤러 하우징. 전면 베젤프레임이 돌출되어 있고 우측 벽에 케이블 슬롯이 보인다.

주인공은 위의 컨트롤러 하우징이다. 외형은 흔한 박스형 외함이지만, 외함 설계에서 빠질 수 없는 요소를 의도적으로 전부 넣었다.

  • 외부 330×170×30mm, 내부 캐비티 320×160mm (벽 두께 5mm, 바닥 4mm, 전면 개방)
  • 기판 고정용 보스 4개 — ⌀8 기둥에 ⌀3.2 나사관통홀
  • 전면 베젤프레임 346×186×4mm — 커버판이 밀려 들어가 걸리는 돌출 립
  • 측면 케이블 통과 슬롯 40×10mm

거창한 제품이 아니라 의도적으로 단순한 크기의 실험이다. 다만 외함 설계의 필수 요소(부울연산 캐비티, 보스, 립, 슬롯)가 전부 들어가 있어서, 이게 되면 실제 제품 외함도 같은 방식으로 된다.

시스템 구성

구성요소 역할 비용
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 창은 켜져 있기만 하면 된다.

1단계 — "하우징 본체부터 만들어줘"

문서를 만들고, 외부 박스(330×170×30)에서 내부 박스(320×160)를 부울연산으로 파낸 뒤, 네 모서리에 고정 보스를 심는다. 실제로 AI가 실행한 코드의 결과 로그다.

하우징 볼륨 mm3: 352307.0
BUILD OK

하우징 본체

▲ 1단계 완료. 캐비티가 파이고 네 모서리에 보스가 서 있는 상태.

2단계 — "전면 베젤프레임과 케이블 슬롯 추가해줘"

346×186×4 판에서 안쪽을 다시 파서 프레임(테두리 링)을 만들고 본체에 융합한다. 커버판이 앞으로 밀려 들어가 이 립에 걸리는 구조. 이어서 오른쪽 벽에 40×10mm 케이블 슬롯을 관통 절삭했다.

최종 볼륨 mm3: 402931.0
BUILD2 OK

베젤+케이블 슬롯

▲ 2단계 완료. 전면 돌출 립과 우측 벽의 케이블 슬롯이 보인다.

3단계 — "STEP, STL, DXF로 내보내고 저장해줘"

마지막 명령 한 번에 제조파일 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 파일 두 개를 이 환경에 넣어봤다. DWG는 네이티브 지원이 아니라 무료 변환기(ODA)를 경유하는데, 설정을 마치고 나면 파일 열기가 그냥 열리는 것과 같다.

  • 복합 도면 (2.2MB): 결선도+기구도면이 들어간 파일. 변환 후 1,917개 객체로 복원됐다. 도면 전체 폭을 쟀더니 처음 3,364mm가 나왔는데, AI가 극단에 있는 객체를 하나하나 확인해 원점에 남아 있던 치수 화살표 기호 잔해까지 잰 값임을 밝히고 본체 기준 1,495×582mm로 정정했다. 이런 검증 과정이 눈으로 보이는 게 MCP 방식의 장점이다.
  • 판 부품 도면 (17KB): 폭 36/38mm, 길이 178/338mm짜리 판 4개 도면. 도면에 적힌 치수 숫자(텍스트)까지 그대로 읽혔다.

발견한 버그 — 한글 경로에서 조용히 실패

이번 테스트의 최대 수확. 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분 만에 원인까지 좁혀내고 우회할 수 있느냐다. 소스와 설정이 모두 공개되어 있어서 가능했다.

솔직한 한계

  1. DWG 네이티브 지원이 아니다. 변환기를 경유하므로 AutoCAD 고급 객체(다이내믹 블록 등)는 깨질 수 있다. 일반 2D 도면은 무난.
  2. 한글 경로 버그는 여전히 유효하다. 레거시 가져오기로 회피 중이며, 근본 수정은 업스트림 리포트가 필요하다.
  3. 큰 도면은 가져오기가 느리다. 2,600개 엔티티급 도면은 AI 명령 타임아웃(90초)을 넘길 수 있다. 뒤에서는 계속 처리되지만 결과 확인을 다시 해야 한다.
  4. 텍스트는 기본 꺼져 있다. 설정을 켜야 하고, 가져와도 MTEXT 서식 코드가 그대로 보여서 한 번 정리가 필요하다.
  5. FreeCAD가 켜져 있어야 동작한다. 대신 켜져 있기만 하면 되고, 마우스·키보드는 점유하지 않는다.

마치며 — 이런 분께 추천합니다

  • 3D 외함/브라켓/마운트를 AI에게 시켜서 만들고 싶은 분 — 명령 몇 번으로 설계+제조파일까지 나온다
  • AutoCAD 라이선스 비용이 부담인 제작업 종사자 — DWG 입출력도 변환기로 실전 가능하다
  • KiCad로 기판을 설계하는 분 — 다음 편에서 이 하우징에 기판을 넣어 간섭검사까지 간다

반대로 "2D DWG를 하루 종일 수정하는 작업"이 목적이라면 아직 AutoCAD의 편의를 따라가긴 어렵다. 도구를 고를 때는 목적을 먼저 볼 것.

설치 절차, 설정 파일 위치, 트러블슈팅 전체는 기술 문서로 따로 정리해두었다. 본문에서 다루지 않은 세부는 그 문서를 참고하면 된다.

테스트 환경: Windows 11 / FreeCAD 1.1.3 / ODA File Converter 27.1.0 / freecad-mcp 0.1.22 / 통합 테스트 10항목 통과

💬 댓글 0
글보기
제목컨트롤러 하우징, 명령 3번으로 여기까지 — AI로 3D 설계·제조파일까지 자동화한 사용기 (FreeCAD 편)2026-09-07 21:08
카테고리AI 활용
작성자
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)의 후속 실험이다.

## 이 글의 주인공

![최종 완성 모델](https://www.wellcoms.co.kr/wp-content/uploads/2026/09/03-final-model.png)

_▲ 최종 완성된 컨트롤러 하우징. 전면 베젤프레임이 돌출되어 있고 우측 벽에 케이블 슬롯이 보인다._

주인공은 위의 **컨트롤러 하우징**이다. 외형은 흔한 박스형 외함이지만, 외함 설계에서 빠질 수 없는 요소를 의도적으로 전부 넣었다.

- 외부 330×170×30mm, 내부 캐비티 320×160mm (벽 두께 5mm, 바닥 4mm, 전면 개방)
- 기판 고정용 보스 4개 — ⌀8 기둥에 ⌀3.2 나사관통홀
- 전면 베젤프레임 346×186×4mm — 커버판이 밀려 들어가 걸리는 돌출 립
- 측면 케이블 통과 슬롯 40×10mm

거창한 제품이 아니라 **의도적으로 단순한 크기의 실험**이다. 다만 외함 설계의 필수 요소(부울연산 캐비티, 보스, 립, 슬롯)가 전부 들어가 있어서, 이게 되면 실제 제품 외함도 같은 방식으로 된다.

## 시스템 구성

| 구성요소 | 역할 | 비용 |
|---|---|---|
| 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는 아예 구조가 다르다.**

```mermaid
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 창은 켜져 있기만 하면 된다.

## 1단계 — "하우징 본체부터 만들어줘"

문서를 만들고, 외부 박스(330×170×30)에서 내부 박스(320×160)를 부울연산으로 파낸 뒤, 네 모서리에 고정 보스를 심는다. 실제로 AI가 실행한 코드의 결과 로그다.

```text
하우징 볼륨 mm3: 352307.0
BUILD OK
```

![하우징 본체](https://www.wellcoms.co.kr/wp-content/uploads/2026/09/01-housing-body.png)

_▲ 1단계 완료. 캐비티가 파이고 네 모서리에 보스가 서 있는 상태._

## 2단계 — "전면 베젤프레임과 케이블 슬롯 추가해줘"

346×186×4 판에서 안쪽을 다시 파서 프레임(테두리 링)을 만들고 본체에 융합한다. 커버판이 앞으로 밀려 들어가 이 립에 걸리는 구조. 이어서 오른쪽 벽에 40×10mm 케이블 슬롯을 관통 절삭했다.

```text
최종 볼륨 mm3: 402931.0
BUILD2 OK
```

![베젤+케이블 슬롯](https://www.wellcoms.co.kr/wp-content/uploads/2026/09/02-bezel-cable-slot.png)

_▲ 2단계 완료. 전면 돌출 립과 우측 벽의 케이블 슬롯이 보인다._

## 3단계 — "STEP, STL, DXF로 내보내고 저장해줘"

마지막 명령 한 번에 제조파일 4종이 나온다.

```text
EXPORT+SAVE OK
```

| 파일 | 크기 | 용도 |
|---|---|---|
| [controller_housing.step](https://www.wellcoms.co.kr/downloads/freecad/controller_housing.step) | 39KB | 가공업체·조립 설계 교환 |
| [controller_housing.stl](https://www.wellcoms.co.kr/downloads/freecad/controller_housing.stl) | 69KB (바이너리 1,416면) | 3D 프린팅 |
| [controller_housing_outline.dxf](https://www.wellcoms.co.kr/downloads/freecad/controller_housing_outline.dxf) | 34KB | 2D 외곽 확인 |
| [컨트롤러_하우징.FCStd](https://www.wellcoms.co.kr/downloads/freecad/controller_housing.FCStd) | 13KB | 다시 열어 편집하는 원본 |

▶ **파일명을 클릭하면 데모 산출물(샘플)을 다운로드할 수 있다.** FCStd는 FreeCAD에서 그대로 열어 편집 가능.

STL은 파일 크기 346×186×34mm — 설계치와 정확히 일치한다. 저장된 FCStd를 다시 열어 부피를 재검증해도 402,931mm³로 동일했다.

## 여기서 끝이 아니다 — 실무 DWG로 검증

데모만으로는 사용기가 아니니, **실제 업무 DWG 파일 두 개**를 이 환경에 넣어봤다. DWG는 네이티브 지원이 아니라 무료 변환기(ODA)를 경유하는데, 설정을 마치고 나면 파일 열기가 그냥 열리는 것과 같다.

- **복합 도면 (2.2MB)**: 결선도+기구도면이 들어간 파일. 변환 후 **1,917개 객체**로 복원됐다. 도면 전체 폭을 쟀더니 처음 3,364mm가 나왔는데, AI가 극단에 있는 객체를 하나하나 확인해 **원점에 남아 있던 치수 화살표 기호 잔해까지 잰 값**임을 밝히고 본체 기준 1,495×582mm로 정정했다. 이런 검증 과정이 눈으로 보이는 게 MCP 방식의 장점이다.
- **판 부품 도면 (17KB)**: 폭 36/38mm, 길이 178/338mm짜리 판 4개 도면. 도면에 적힌 **치수 숫자(텍스트)까지 그대로 읽혔다.**

## 발견한 버그 — 한글 경로에서 조용히 실패

이번 테스트의 최대 수확. **FreeCAD 1.1.3의 최신 DXF 가져오기(C++)는 파일 경로에 한글이 포함되면 에러 없이 빈 문서를 만든다.** 같은 파일을 영문 경로에서 열면 76개 객체가 나오는데, 한글 경로에서는 0개다. GUI 탓이 아니라 importer 자체 문제임을 콘솔 모드로 재현해서 확인했다.

```text
한글 경로(D:\MAXIGN\킬바 도안\킬바.dwg) → 내부변환 255KB 정상 → 가져오기 0객체
영문 사본(D:\...\kilba.dwg) → 내부변환 255KB 정상 → 가져오기 76객체
```

해결은 의외로 간단했다. 구버전 방식의 **레거시 가져오기(Python 기반)로 전환**하니 한글 경로에서도 정상(59객체)이었다. 덧붙여 도면의 치수 숫자가 안 보이는 문제도 있었는데, 이건 버그가 아니라 FreeCAD가 기본값에서 **텍스트·치수를 아예 가져오지 않기 때문**(`skipping texts...`가 로그에 그대로 찍힌다)이었다. 설정을 켜고 MTEXT 서식 코드만 정리하니 실제 수치가 화면에 떴다.

> 무료 소프트웨어를 실무에 쓸 때 중요한 건 "버그가 있냐 없냐"가 아니라 **버그를 30분 만에 원인까지 좁혀내고 우회할 수 있느냐**다. 소스와 설정이 모두 공개되어 있어서 가능했다.

## 솔직한 한계

1. **DWG 네이티브 지원이 아니다.** 변환기를 경유하므로 AutoCAD 고급 객체(다이내믹 블록 등)는 깨질 수 있다. 일반 2D 도면은 무난.
2. **한글 경로 버그는 여전히 유효하다.** 레거시 가져오기로 회피 중이며, 근본 수정은 업스트림 리포트가 필요하다.
3. **큰 도면은 가져오기가 느리다.** 2,600개 엔티티급 도면은 AI 명령 타임아웃(90초)을 넘길 수 있다. 뒤에서는 계속 처리되지만 결과 확인을 다시 해야 한다.
4. **텍스트는 기본 꺼져 있다.** 설정을 켜야 하고, 가져와도 MTEXT 서식 코드가 그대로 보여서 한 번 정리가 필요하다.
5. **FreeCAD가 켜져 있어야 동작한다.** 대신 켜져 있기만 하면 되고, 마우스·키보드는 점유하지 않는다.

## 마치며 — 이런 분께 추천합니다

- **3D 외함/브라켓/마운트를 AI에게 시켜서 만들고 싶은 분** — 명령 몇 번으로 설계+제조파일까지 나온다
- **AutoCAD 라이선스 비용이 부담인 제작업 종사자** — DWG 입출력도 변환기로 실전 가능하다
- **KiCad로 기판을 설계하는 분** — 다음 편에서 이 하우징에 기판을 넣어 간섭검사까지 간다

반대로 "2D DWG를 하루 종일 수정하는 작업"이 목적이라면 아직 AutoCAD의 편의를 따라가긴 어렵다. 도구를 고를 때는 목적을 먼저 볼 것.

설치 절차, 설정 파일 위치, 트러블슈팅 전체는 기술 문서로 따로 정리해두었다. 본문에서 다루지 않은 세부는 그 문서를 참고하면 된다.

_테스트 환경: Windows 11 / FreeCAD 1.1.3 / ODA File Converter 27.1.0 / freecad-mcp 0.1.22 / 통합 테스트 10항목 통과_
댓글
자동등록방지
(자동등록방지 숫자를 입력해 주세요)
목록으로