실습 5. STL 스풀 가이드 다시 그리기
| 항목 | 내용 |
|---|---|
| 입력 파일 | 05-spool-guide.stl (필라멘트 스풀 가이드, 5,758면, 수나사 포함) |
| 걸리는 시간 | 5분 (분석·재구성·비교 합쳐 25초) |
| 결과물 | 문서 stl_test 에 참고 메시 + Body SpoolGuide(피처 8개, 나사산 1개, 파라미터 시트) |
| 배우는 것 | 메시(STL)는 면·솔리드가 없다는 것, 띠·단면 원·나사를 측정으로 읽는 법, 불리언 없이 편차로 검증하는 법 |
STL 은 삼각형 덩어리라 구멍 찾기·간섭 검사 같은 형상 툴이 읽지 못합니다. 그래서 절차가 STEP 과 다릅니다. 메시를 투명한 참고물로 띄워 두고 높이별 단면을 원으로 맞춰 치수를 얻고, 그 위에 Body 를 겹쳐 그린 뒤 표면 편차로 검증합니다. 원본 기록에서는 메시 정점 2,863개 전부가 모델 표면에서 0.03 mm 안(평균 0.003), 부피 차 0.014 % 였습니다.
원본과 완성
섹션 제목: “원본과 완성”

| 구분 | 파일 | 설명 | 크기 |
|---|---|---|---|
| 원본 | 05-spool-guide.stl | STL | 288 KB |
| 완성 | 05-spool_guide-done.FCStd | 참고 메시 포함 | 327 KB |
| 완성 | 05-SpoolGuide-done.step | STEP | 167 KB |
- FreeCAD 1.1.3 을 켭니다. 리포트 뷰에
[CAD X-ray] 서버 시작이 보이면 됩니다. - STL 을
C:\cad\05-spool-guide.stl에 둡니다. 원본 STL 은 이름에 띄어쓰기가 있었지만 릴리스 자산은 짧은 이름이라 받은 그대로 쓰면 됩니다. - PowerShell 에서
C:\cad로 이동해claude를 엽니다. - 문서는 AI 가 만듭니다. 이미 열린 문서가 있으면 닫아 둡니다.
1. 메시를 띄우고 분석 표부터 받는다
섹션 제목: “1. 메시를 띄우고 분석 표부터 받는다”C:\cad\05-spool-guide.stl 을 새 문서 stl_test 에 참고 메시로 불러와서 분석해줘. 닫힘·자기 교차·크기, 주축, 띠 경계, 띠별 단면 원, 공통 중심, 나사(피치·외경·골·방향), 원·직선으로 안 맞는 단면 구간까지 읽은 값과 가정을 표로.AI 가 하는 일 — STL 을 Mesh 객체로 넣고 투명도 70 으로 둡니다. 변환하지 않습니다. 닫힘(is_solid)·비다양체·자기 교차와 bbox·부피를 본 뒤, 평면 조각으로 주축(Z)과 띠 경계를 잡고 띠 중간 높이마다 단면 폴리라인을 최소제곱 원으로 맞춥니다(반지름 0.01 mm 안). 높이별 단면의 최대 반지름 각도가 z 에 비례해 돌면 나사로 판정합니다(1 mm 당 180° → 피치 2. 원본 기록에서는 처음에 캠 돌기로 오해했던 것을 이 방법으로 바로잡았습니다). 판의 호형 슬롯 4개와 창 4개는 원이 아니라 호+직선 조합이라 z=1 단면을 꼭짓점 검출 후 구간별로 호·직선에 맞추고, 맞지 않는 구간은 unsupported 로 셉니다.
확인하기 — 3D 뷰에 반투명 메시가 보이고, 표에 띠 경계 5개·나사 피치 2·unsupported 0 이 있으면 됩니다. is_solid 가 false 면 이후의 부피·편차 값을 믿을 수 없다고 AI 가 경고합니다. 축이 Z 가 아니라고 하면 STL 이 눕혀 저장된 것입니다. “축을 Z 로 보고 다시” 라고 하거나 Placement 를 돌려 달라고 합니다.
2. 나사산까지 만들게 한다
섹션 제목: “2. 나사산까지 만들게 한다”이 값으로 Body SpoolGuide 를 나사산까지 만들어줘. 치수는 전부 Params 에, 피처마다 검증하고 실패하면 멈춰.AI 가 하는 일 — 띠 순서대로 Pad 4개·Pocket 2개를 쌓고(판 → 슬롯·창 관통 → 테두리 벽·허브 링 → 허브 → 나사 원통), 슬롯·창은 단면 피팅 요소를 그대로 스케치에 옮깁니다. 모든 원의 중심은 메시 공통 중심입니다. 나사는 축을 지나는 평면에 골 단면(한 피치 전체)을 놓고 나선 절삭(helix)을 겁니다. 나선은 프로파일 각도 0° 부터 시작해 그 앞 첫 바퀴는 깎이지 않으므로 한 피치 아래에서 시작(높이 = 길이 + 2피치)하고, 허브에 잘못 파인 z 25–28 링을 PadRefill 로 되메웁니다.
확인하기 — 메시와 Body 가 겹쳐 보이는지 3D 뷰에서 봅니다. 투명 메시 밖으로 Body 가 튀어나오거나 메시가 Body 밖으로 보이면 그 띠의 반지름이 틀린 것입니다. 나사 원통을 확대해 산이 8 mm 길이에 4바퀴 있는지, 허브 윗면 아래에 파인 자국이 없는지 봅니다.
3. 편차로 검증하고 저장한다
섹션 제목: “3. 편차로 검증하고 저장한다”참고 메시와 SpoolGuide 를 비교해줘. 부피 차, 표면 편차(최대·평균·p95), 편차가 가장 큰 점의 위치. match 면 iso 보여주고 C:\cad\spool_guide.FCStd 로 저장해줘.AI 가 하는 일 — 불리언을 쓰지 않습니다. Body 면의 표본점에서 법선 방향으로 메시까지 거리를 재고(편차), 반대로 메시 정점에서 Body 까지 거리를 잽니다(역방향 편차). 편차가 큰 점의 위치가 곧 틀린 자리입니다.
확인하기 — match 면 성공입니다. 나사 시작부 몇 점이 큰 것은 나선 시작 위상 차이라 정상입니다.
결과 확인
섹션 제목: “결과 확인”| 기준 | 값 |
|---|---|
| 피처 | Pad 4 + Pocket 2 + 나사산 1 + 되메움 Pad 1, 전부 Valid |
| 스케치 자유도 | 전부 0 |
| 부피 차 | 0.014 % |
| 표면 편차 | 정점 2,863개 전부 0.03 mm 안(평균 0.003), 나사 시작부 4점만 0.4–0.9 |
| 나사 | 수나사 Ø44.5 × 피치 2 × 길이 8 |
잘 안 될 때
섹션 제목: “잘 안 될 때”- is_solid 가 false — 메시에 구멍이 있습니다. 슬라이서나 메시 수리 툴로 닫은 STL 을 다시 받습니다. 부피·편차 값을 믿을 수 없습니다.
- FreeCAD 가 멈췄다 — 메시를 솔리드로 바꿔 불리언을 건 것입니다. 끝날 때까지 기다리거나 강제 종료합니다. 비교할 때 “메시 이름 그대로” 라고 명시합니다.
- 띠 반지름이 메시와 어긋난다 — 단면 원 피팅 값(소수 자리 그대로)을 쓰지 않고 반올림한 것입니다. “피팅 값 그대로” 라고 다시 시킵니다.
- 나사가 원통 밖에 생기거나 반대 방향이다 — 골 단면 프로파일의 반지름·z 부호 문제입니다. “나사 프로파일을 축 기준 반지름 21.05–22.25, z 는 허브 윗면 기준으로” 라고 좌표계를 못 박아 줍니다.
- 나사 판정이 안 나온다 — 단면이 원으로 보일 만큼 나사가 얕거나 짧은 것입니다. 피치·외경을 아는 값으로 직접 말해 주면 됩니다.
더 해보기
섹션 제목: “더 해보기”Params.thread_pitch를 1.5 로 바꿔 재계산합니다. 나선 높이(길이 + 2피치)와 되메움 Pad 가 같이 따라오는지 봅니다.- 이 Body 를 PETG·0.4 노즐로 출력 검토해 봅니다(실습 8). 얇은 테두리 벽(1 mm)이 어떻게 판정되는지 봅니다.
- 판을 Ø180 으로 줄여(
Params.plate_r) 작은 프린터 베드에 맞춰 봅니다.
| 뒤에서 도는 기능 | |
|---|---|
| 읽기 | import_mesh, analyze_mesh |
| 측정 | section_profile(메시 입력, 직선·호·원 피팅) |
| 생성·검증 | build_features(wires·helix op), compare_shapes(메시 입력, 광선 편차) |
| 확인 | get_screenshot, save_document |
원본 기록: https://github.com/WaveSimm/cadxray/blob/master/examples/stl_spool_guide_with_m7.py