콘텐츠로 이동

실습 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 % 였습니다.

원본: 스풀 가이드 STL
원본 05-spool-guide.stl 을 Mesh 객체로 읽은 등각(메시 기본 색이라 옅게 보임) — 삼각형 5,758개
완성: 다시 그린 스풀 가이드
완성 SpoolGuide — 피처 8개(나사산 포함), 자유도 0, 부피 차 +0.014 %, 메시 정점 편차 최대 0.028 mm
구분 파일 설명 크기
원본 05-spool-guide.stl STL 288 KB
완성 05-spool_guide-done.FCStd 참고 메시 포함 327 KB
완성 05-SpoolGuide-done.step STEP 167 KB
  1. FreeCAD 1.1.3 을 켭니다. 리포트 뷰에 [CAD X-ray] 서버 시작 이 보이면 됩니다.
  2. STL 을 C:\cad\05-spool-guide.stl 에 둡니다. 원본 STL 은 이름에 띄어쓰기가 있었지만 릴리스 자산은 짧은 이름이라 받은 그대로 쓰면 됩니다.
  3. PowerShell 에서 C:\cad 로 이동해 claude 를 엽니다.
  4. 문서는 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 를 돌려 달라고 합니다.

이렇게 말한다
이 값으로 Body SpoolGuide 를 나사산까지 만들어줘. 치수는 전부 Params 에, 피처마다 검증하고 실패하면 멈춰.

AI 가 하는 일 — 띠 순서대로 Pad 4개·Pocket 2개를 쌓고(판 → 슬롯·창 관통 → 테두리 벽·허브 링 → 허브 → 나사 원통), 슬롯·창은 단면 피팅 요소를 그대로 스케치에 옮깁니다. 모든 원의 중심은 메시 공통 중심입니다. 나사는 축을 지나는 평면에 골 단면(한 피치 전체)을 놓고 나선 절삭(helix)을 겁니다. 나선은 프로파일 각도 0° 부터 시작해 그 앞 첫 바퀴는 깎이지 않으므로 한 피치 아래에서 시작(높이 = 길이 + 2피치)하고, 허브에 잘못 파인 z 25–28 링을 PadRefill 로 되메웁니다.

확인하기 — 메시와 Body 가 겹쳐 보이는지 3D 뷰에서 봅니다. 투명 메시 밖으로 Body 가 튀어나오거나 메시가 Body 밖으로 보이면 그 띠의 반지름이 틀린 것입니다. 나사 원통을 확대해 산이 8 mm 길이에 4바퀴 있는지, 허브 윗면 아래에 파인 자국이 없는지 봅니다.

이렇게 말한다
참고 메시와 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 는 허브 윗면 기준으로” 라고 좌표계를 못 박아 줍니다.
  • 나사 판정이 안 나온다 — 단면이 원으로 보일 만큼 나사가 얕거나 짧은 것입니다. 피치·외경을 아는 값으로 직접 말해 주면 됩니다.
  1. Params.thread_pitch 를 1.5 로 바꿔 재계산합니다. 나선 높이(길이 + 2피치)와 되메움 Pad 가 같이 따라오는지 봅니다.
  2. 이 Body 를 PETG·0.4 노즐로 출력 검토해 봅니다(실습 8). 얇은 테두리 벽(1 mm)이 어떻게 판정되는지 봅니다.
  3. 판을 Ø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