실습 2. 커버 가공도 PDF 에서 판 만들기
| 항목 | 내용 |
|---|---|
| 입력 파일 | 02-cover-drawing.pdf (1:1 벡터 도면 2장, 데이터로거 커버 + 센서 확장 로거 커버) |
| 걸리는 시간 | 3분 (판 2장 생성은 1초 미만) |
| 결과물 | 문서 2개(cover_logger, cover_sensor), 각각 Body 1개 + Spreadsheet Params |
| 배우는 것 | 도면 PDF 를 AI 에 읽히는 법, 축척 확인, 도면에 없는 치수(두께)를 가정으로 채우고 근거를 남기는 법 |
실습 1에서는 치수를 전부 말로 불러 줬습니다. 이번에는 도면 파일을 주고 AI 가 치수를 직접 읽게 합니다. 벡터 PDF 는 그림 안에 원·사각형과 치수 글자가 좌표째 들어 있어, AI 가 그것을 뽑아 mm 로 환산할 수 있습니다.
원본과 완성
섹션 제목: “원본과 완성”


| 구분 | 파일 | 설명 | 크기 |
|---|---|---|---|
| 원본 | 02-cover-drawing.pdf | PDF 도면 | 776 KB |
| 완성 | 02-cover_logger-done.FCStd | 데이터로거 커버 | 32 KB |
| 완성 | 02-cover_sensor-done.FCStd | 센서 확장 로거 커버 | 19 KB |
| 완성 | 02-Cover_DataLogger-done.step | STEP | 28 KB |
| 완성 | 02-Cover_SensorExt-done.step | STEP | 22 KB |
- FreeCAD 1.1.3 을 켭니다. 리포트 뷰에
[CAD X-ray] 서버 시작 http://127.0.0.1:9877 (툴 36개)가 보이면 됩니다. - PDF 를 내려받아 경로가 짧은 폴더(예:
C:\cad-cover-drawing.pdf)에 둡니다. 파일명은 릴리스에서 받은 그대로 쓰면 됩니다. - PowerShell 에서 그 폴더로 이동한 뒤
claude를 쳐서 AI 툴을 엽니다(Codex·Gemini CLI 도 같은 폴더에서 엽니다). - FreeCAD 에 다른 문서가 열려 있으면 닫아 둡니다. AI 가 “어느 문서에 만들까요”를 묻는 일이 줄어듭니다.
1. 도면을 읽혀 표부터 받는다
섹션 제목: “1. 도면을 읽혀 표부터 받는다”C:\cad-cover-drawing.pdf 읽어서 판별로 «읽은 값 / 가정한 값 / 근거» 표부터 보여줘.AI 가 하는 일 — PDF 의 벡터 요소(원은 곡선 4개짜리 경로, 사각형은 re)와 치수 글자를 읽어 1 pt = 25.4/72 mm 로 환산합니다. 시키지 않아도 표에 나와야 하는 것이 셋 있습니다. 축척(치수 글자 36.38 과 원 중심 간격 36.38 이 같으면 1:1), 적힌 치수와 그려진 위치가 어긋난 곳(도면 2 의 첫 구멍이 0.4 / 2.2 mm), 그리고 도면에 없어서 가정한 값(판 두께, Ø7 구멍 높이).
확인하기 — 표에 판 크기 224.28×169.37 과 구멍 종류(Ø18·Ø25·Ø7)가 있고, «가정» 표시가 붙은 항목이 두께와 Ø7 높이 둘뿐이면 제대로 읽은 것입니다. 축척이 1:1 이 아니라고 하면 PDF 가 축소 인쇄본일 수 있으니 원본 파일을 다시 받습니다.
2. 가정에 답하고 만들게 한다
섹션 제목: “2. 가정에 답하고 만들게 한다”적힌 치수 우선, 두께는 3 으로 파라미터, 플랜지 사각형과 그 안 작은 구멍은 가공 안 함. 이대로 두 판 만들어줘. 문서 cover_logger 에 Body Cover_DataLogger, 문서 cover_sensor 에 Body Cover_SensorExt.AI 가 하는 일 — 데이터로거 판은 스케치 4개(판 사각형 + 구멍 그룹 3개)와 Pad 1개·Pocket 3개, 센서 확장 판은 Pad 1개·Pocket 1개를 순서대로 쌓고 피처마다 재계산해 유효한지 확인합니다. 구멍 중심은 안쪽 사각형 기준 치수에 8.79 를 더한 값이고, 안테나 구멍 x 좌표 4개(120.40 / 138.10 / 165.30 / 183.00)는 안쪽 사각형 폭 206.70 에서 23.70 을 뺀 값과 간격 17.70 / 27.20 / 17.70 으로 역산됩니다. 센서판 x 는 27.40 / 65.12 / 102.92 / 140.72 / 178.52 다섯 열입니다. 치수는 Spreadsheet Params 에 별칭으로 들어가므로 나중에 두께만 바꿔도 전체가 따라옵니다.
확인하기 — 모델 트리에서 Cover_DataLogger 아래 PadPlate, Pocket_D18, Pocket_D25, Pocket_D7, Cover_SensorExt 아래 PadPlate, Pocket_D18 이 보이고 빨간 표시가 없어야 합니다. Params 시트를 열어 thickness 를 5 로 바꾸고 재계산(F5 또는 Ctrl+R)하면 판이 두꺼워지는지 봅니다. 확인했으면 다시 3 으로 되돌립니다. 센서판은 위에서 내려다보며(숫자 키 2) 구멍이 10개인지 셉니다.
3. 눈으로 보고 저장한다
섹션 제목: “3. 눈으로 보고 저장한다”두 문서 top 뷰 보여줘. 맞으면 C:\cad\cover_logger.FCStd, C:\cad\cover_sensor.FCStd 로 저장해줘.AI 가 하는 일 — 스크린샷을 대화에 띄우고, 사용자가 “맞다”고 한 뒤에만 저장합니다. AI 는 시키기 전에는 문서를 저장하지 않는 것이 규칙입니다.
확인하기 — 스크린샷의 구멍 배치를 도면과 겹쳐 봅니다. 특히 센서판의 첫 구멍이 “적힌 치수” 위치에 있는지 봅니다.
결과 확인
섹션 제목: “결과 확인”| 기준 | 값 |
|---|---|
| 판 bbox | 224.28 × 169.37 × 3.0 |
| 스케치 자유도 | 전부 0 |
| 형상 유효성 | valid |
| 피처 수 | 데이터로거 4개(Pad 1 + Pocket 3), 센서 확장 2개(Pad 1 + Pocket 1) |
| 파라미터 | Params 에 plate_w, plate_h, inset, thickness, hole_d18 (+ hole_d25, hole_d7) |
원본 STEP 이 없는 실습이라 부피 비교는 하지 않습니다. bbox·구멍 개수·스크린샷이 도면과 맞으면 성공입니다.
잘 안 될 때
섹션 제목: “잘 안 될 때”- “PDF 를 읽을 수 없다” — 스캔본(이미지 PDF)이면 벡터가 없어 이 방법이 안 됩니다. 실습 1처럼 치수를 말로 불러 주거나 원본 CAD 도면을 받습니다.
- 축척이 1:1 이 아니라고 한다 — 인쇄용으로 축소된 PDF 입니다. 치수 글자와 그려진 길이의 비율을 AI 가 알려 주므로, “그 배율로 환산해서 진행해” 라고 하면 됩니다.
- 구멍이 판 밖으로 나간다 — 안쪽 사각형 기준(8.79 오프셋)을 빠뜨린 것입니다. “구멍 좌표에 inset 8.79 를 더했는지 확인해 줘” 라고 합니다.
- 문서가 여러 개 열려 있어 AI 가 되묻는다 — 문서 이름을 말해 주면 됩니다. 처음부터 “새 문서 cover_logger 에” 처럼 이름을 붙여 시키면 묻지 않습니다.
- 판이 만들어졌는데 빨간 피처가 있다 — “빨간 피처 원인 찾아서 고쳐 줘” 라고 합니다(실습 6 참고).
더 해보기
섹션 제목: “더 해보기”Params.thickness를 2 로 바꾸고 재계산해 봅니다. 구멍 Pocket 이 여전히 관통인지 확인합니다.- Ø7 안테나 구멍 4개에 0.5 mm 챔퍼를 말로 시켜 봅니다. “Ø7 구멍 윗모서리에 0.5 챔퍼” 처럼 모서리 조건을 말하면 됩니다.
- 두 판을 한 문서에 넣고 2D 도면을 만들어 봅니다(실습 7).
| 뒤에서 도는 기능 | |
|---|---|
| 도면 읽기 | AI 툴 자체(pymupdf 로 벡터·글자 추출) |
| 모델 생성 | build_features(rect·circles 프로파일, Params 별칭) |
| 확인 | inspect_object, get_screenshot, save_document |
원본 기록: https://github.com/WaveSimm/cadxray/blob/master/examples/cover_from_pdf_drawing.py