콘텐츠로 이동

실습 4. 벤더 STEP 부품 분석하고 다시 그리기

항목 내용
입력 파일 04-tt_fractal_vise_assembly.step (벤더 바이스 어셈블리 STEP, 80부품 20종. 이 중 클램프 조 2B2(44면, BSpline 전이면 포함)를 다시 그립니다)
걸리는 시간 5분 (STEP 열기 2초, 재구성 8초, 비교 1초)
결과물 새 문서 jaw_2B2_tools 에 Body 1개(피처 12개, 스케치 12개 전부 자유도 0, 파라미터 시트)
배우는 것 STEP 에서 구멍·피치 읽기, 히스토리 없는 덩어리를 피처 있는 모델로 바꾸는 절차, 원본과의 차집합 검증

벤더 STEP 은 피처가 없는 덩어리라 치수를 바꿀 수 없습니다. 이 실습은 그 덩어리를 읽고 → 측정하고 → 피처로 다시 쌓고 → 원본과 비교하는 전 과정을 말로 시킵니다. 원본 기록에서는 부피 차 +0.035 mm³(0.0004 %)로 identical 판정이 났습니다.

원본: 바이스 어셈블리 STEP
원본 tt_fractal_vise_assembly.step 을 가져온 등각 — 80부품 20종
원본: 클램프 조 2B2
원본 중 2B2 — 피처 없는 덩어리, 44면(BSpline 8)
완성: 다시 그린 2B2
완성 jaw_2B2(참고용 Ref_2B2 숨김) — 피처 12개, 스케치 전부 자유도 0, 원본과 부피 차 0.000449 % (identical)
구분 파일 설명 크기
원본 04-tt_fractal_vise_assembly.step 어셈블리 STEP 3.1 MB
원본 04-jaw_2B2-original.step 2B2 만 뽑은 STEP 75 KB
완성 04-jaw_2B2-done.FCStd 다시 그린 2B2 (원본 사본 Ref_2B2 숨김 포함) 398 KB
완성 04-jaw_2B2-done.step STEP 98 KB
완성 04-assembly-done.FCStd 어셈블리 80부품 → Body + 접지 조인트 변환본 4.5 MB
  1. FreeCAD 1.1.3 을 켭니다. 리포트 뷰에 [CAD X-ray] 서버 시작 이 보이면 됩니다.
  2. STEP 을 C:\cad\04-tt_fractal_vise_assembly.step 에 둡니다.
  3. PowerShell 에서 C:\cad 로 이동해 claude 를 엽니다.
  4. 문서를 미리 열지 않습니다. AI 가 STEP 을 열면서 문서를 만듭니다.

1. STEP 을 열고 분석 표부터 받는다

섹션 제목: “1. STEP 을 열고 분석 표부터 받는다”
이렇게 말한다
C:\cad\04-tt_fractal_vise_assembly.step 열어서 Label 2B2 부품을 분석해줘. 구조와 유효성, 구멍(직경·깊이·관통·카운터보어·챔퍼·피치), 면 분류와 다시 그릴 수 있는지, 띠 경계 z, 기준점(정점 측정값)과 설계값을 표로.

AI 가 하는 일 — 네 가지를 차례로 합니다. ① STEP 을 새 문서로 열고 부품 계층을 읽습니다. 어셈블리라 부품이 80개 들어오며, STEP 으로 들어온 객체의 내부 이름은 Part__Feature… 이고 원래 이름은 Label 에 있습니다. ② 오목 원통면을 축·중심으로 묶어 구멍을 세고, 같은 축의 카운터보어·챔퍼를 구멍에 붙이고, 지름을 ISO 미터나사 표와 대조합니다. ③ 면마다 정체를 판정합니다. BSpline 면도 표본점을 찍어 원통·원뿔에 맞춰 보므로 “가짜 자유곡면” 이 걸러집니다. ④ 정점 좌표 히스토그램에서 띠·홈·립의 z 경계를 읽고, 기준점(X0=20.343193, Y0=45.052724, Z0=53.679659)은 측정값 그대로, 두께 12·높이 16 같은 설계값은 정수로 정리합니다.

확인하기 — 트리에 부품 80개, 리포트 뷰에 오류 없음. 판정이 prismatic 또는 mixed 면 진행합니다(free_form 이면 원본을 바닥에 깔고 피처를 얹는 BaseFeature 방식). 구멍 3개(Ø3.4 하나 + Ø2.2 둘), 표에 측정값(소수 6자리)과 설계값(정수)이 구분돼 있으면 됩니다. 이 뒤로는 모든 말에 “2B2” 를 붙여 대상을 못 박습니다.

이렇게 말한다
새 문서 jaw_2B2 에 Body 로 2B2 를 다시 그려줘. 치수는 전부 Params 에, 반지름·기준점은 측정값 그대로. 피처마다 검증하고 실패하면 멈춰서 알려줘.

AI 가 하는 일 — 피처 12개를 JSON 목록 하나로 만들어 순서대로 쌓습니다. 띠 세 개는 원본 단면을 직접 잘라 스케치에 옮기므로(아래 → 가운데 → 위, 서로 겹치게) 좌표가 대화를 오가지 않습니다. 배럴 더브테일 홈은 회전 절삭, 홈이 깎아 버린 귀는 홈 반지름 원 밖만 다시 Pad. 시트 립 전이 쐐기 2개는 회전 절삭, 앞판 귀 복원. 구멍은 1단계 값으로 Pocket(Ø3.4 관통, Ø2.2 깊이 5 둘, 카운터보어 Ø5.6 깊이 4), 입구 챔퍼 0.5. 피처마다 재계산해 유효한지 보고, 실패하면 그 피처에서 멈춥니다.

확인하기 — 트리의 Body 아래 피처 12개가 전부 검은 글씨인지, Params 시트에 x_back·thickness·barrel_r·groove_r·hole_d·cbore_d 등이 들어갔는지 봅니다. 중간에 멈추면 멈춘 피처 이름과 상태 문자열을 AI 가 알려 주므로 그 피처만 고칩니다.

이렇게 말한다
원본 2B2 와 비교해서 부피 차와 빠진·남는 조각 알려줘. identical 이면 iso 보여주고 C:\cad\jaw_2B2.FCStd 로 저장해줘.

AI 가 하는 일 — 두 형상의 퍼지 차집합을 떠서 부피 차와 빠진·남는 조각의 bbox 를 줍니다. 판정은 identical(0.001 % 미만) / match(0.1 % 미만) / different.

확인하기 — 판정이 identical 또는 match 면 성공입니다. different 면 조각의 bbox 위치가 곧 틀린 자리입니다. 그 자리의 피처만 고쳐 달라고 합니다.

기준 값
피처 12개(Pad 5, Groove 3, Pocket 3, Chamfer 1) 전부 Valid
스케치 자유도 12개 전부 0
부피 차 +0.035 mm³ (0.0004 %)
비교 판정 identical
걸린 시간(재구성 툴 호출) 약 2.0 초(단면 트레이스 5회 포함), 비교 0.78 초
  • 판정이 different 이고 조각이 배럴 홈 근처에 있다 — 홈 반지름을 반올림한 것입니다. “groove_r 을 측정값 33.620391 그대로 넣어 다시” 라고 합니다.
  • Pad 가 “떨어져 있어 한 Body 에 못 넣는다”고 실패한다 — 띠 Pad 가 서로 겹치지 않은 것입니다. 각 띠의 높이를 옆 띠와 겹치게(전이 높이만큼) 늘려 달라고 합니다.
  • 자유곡면 면적이 크다고 한다 — 원본을 BaseFeature 로 깔고 구멍·홈만 피처로 얹는 하이브리드로 갑니다. “원본을 BaseFeature 로 두고 구멍만 파라메트릭으로” 라고 시킵니다.
  • 비교에서 boolean_failed 가 뜬다 — 면이 겹쳐 불리언이 안 된 것입니다. 이때는 조각 대신 부피 차·면적 차로만 판단합니다.
  • STL/OBJ 를 받았다 — 면·솔리드가 없어 이 실습의 구멍·비교 방법이 안 됩니다. 실습 5(STL 다시 그리기)로 갑니다.
  1. Params.hole_d 를 4.5(M4 관통)로 바꾸고 재계산해 카운터보어와 챔퍼가 따라오는지 봅니다.
  2. 어셈블리 전체로 “부품끼리 겹치는 쌍이 있는지 봐 줘” 라고 간섭 검사를 시켜 봅니다. 원본 기록에서는 80부품 3,160쌍을 6.5초에 검사해 간섭 0, 접촉 9쌍이었습니다.
  3. 나머지 19종도 같은 방법으로 다시 그리고, 종류당 Body 하나에 인스턴스 80개를 Link 로 배치해 어셈블리를 통째로 재구성해 봅니다(원본 기록 3.5분, 20종 중 identical 15 · match 4). 순서는 examples/rebuild_*_with_tools.py → assemble_from_bodies.py.
  4. “알루미늄(2.7 g/cm³)이면 무게가 얼마야?” 로 질량을 물어봅니다.

뒤에서 도는 기능
읽기 import_step, get_document_graph, analyze_shape
측정 find_holes, classify_faces, section_profile
생성·검증 build_features, compare_shapes
확인 get_screenshot, save_document

원본 기록: https://github.com/WaveSimm/cadxray/blob/master/examples/rebuild_2b2_with_tools.py · 어셈블리 전체: https://github.com/WaveSimm/cadxray/blob/master/examples/assemble_from_bodies.py