콘텐츠로 이동

실습 10. 관측 프레임 DXF 에서 3D 만들기 (종합)

항목 내용
입력 파일 10-pole-frame-drawing.dxf (1/40 도면, 모델 좌표는 실치수 mm)
걸리는 시간 10분 (프레임 생성 24초, 나머지는 가정 확인)
결과물 부품 Body 7종(기둥·가로 파이프·각관·거싯·베이스 플레이트·캡·기초) + Link 27개 프레임 그룹, 파라미터 표
배우는 것 도면·부품표·주석이 서로 다를 때 무엇을 따를지 정하는 법, AI 의 «가정»을 표로 받아 하나씩 승인하는 대화, 종류당 Body 하나 + Link 인스턴스 구조

지금까지의 실습은 부품 하나였습니다. 이번에는 실제 현장 도면(연대포구 관측 프레임, 각관 부착)으로 부품 7종·인스턴스 27개짜리 구조물을 만듭니다. 도면에는 규격이 세 곳(부품표 TEXT, 치수, 그림)에 흩어져 있고 서로 어긋나는 곳도 있습니다. 그래서 이 실습의 절반은 모델링이 아니라 AI 가 읽어 낸 것과 가정한 것을 표로 받아 확인하는 일입니다.

원본: 관측 프레임 도면 DXF
원본 10-pole-frame-drawing.dxf 를 FreeCAD 로 가져온 평면 뷰(도면 밖 잡객체 숨김) — 1/40 도면, 정면·측면·평면과 BOM
완성: 관측 프레임 3D
완성 Body 7종(피처 12)은 숨기고 Link 27개만 표시 — 기둥·가로 파이프·각관·거싯·베이스·캡·기초, 전부 유효
구분 파일 설명 크기
원본 10-pole-frame-drawing.dxf DXF 751 KB
완성 10-pole_frame-done.FCStd 프레임 전체 675 KB
완성 10-pole_frame-done.step STEP (Link 27개 컴파운드) 1.0 MB
  1. FreeCAD 1.1.3 을 켜고 리포트 뷰에 [CAD X-ray] 서버 시작 을 확인합니다.
  2. AI 툴을 엽니다. DXF 를 읽으려면 AI 툴 쪽 파이썬에 ezdxf 가 필요합니다. 없으면 AI 가 설치를 제안하니 허락합니다.
  3. DXF 를 내려받아 경로를 기억해 둡니다(예: C:\work\pole\10-pole-frame-drawing.dxf).
  4. 새 문서를 엽니다.

1. 도면을 읽고 «읽어 낸 것 / 가정한 것» 표 받기

섹션 제목: “1. 도면을 읽고 «읽어 낸 것 / 가정한 것» 표 받기”
이렇게 말한다
C:\work\pole\10-pole-frame-drawing.dxf 읽어서(FreeCAD 가져오기 말고 ezdxf 로, 부품표 글자까지) 부품별로 «읽은 값 / 가정한 값 / 근거» 표 보여줘. 도면과 부품표가 다른 곳도 따로.

AI 가 하는 일 — DXF 의 modelspace 에서 LWPOLYLINE·CIRCLE·DIMENSION(측정값)·TEXT·MULTILEADER·블록(BRACKET1)을 뽑고, 영역별로 그림을 그려 눈으로 대조합니다. 부품표 글자에서 파이프 규격(PIPE-250A SCH160 = OD 267.4×28.4t, PIPE-150A = OD 165.2×18.2t)을 읽습니다. 그림에는 기둥이 216(200A) 으로 그려져 있어 부품표와 다른데, 이런 어긋남을 표에 적어 줍니다.

확인하기 — 아래와 비슷한 표가 나와야 합니다. 원본 기록에서 확인된 값입니다.

이렇게 말한다
기둥은 부품표(267.4) 따르고, 각관 두께 4.5 OK, 기초 깊이는 1500, 거싯 스나이프는 직선 OK, 불명확한 두 치수는 빼. 이 값으로 파라미터 표 보여줘.

AI 가 하는 일 — 승인된 값으로 파라미터 이름·값 목록(pole_od, pole_t, pole_h, span, bar_od, tube_w, hole_d, hole_pitch, found_h …)을 정리합니다. 이 목록이 나중에 Spreadsheet Params 가 됩니다.

확인하기 — found_h 가 1500 으로 바뀌었는지, 기둥 중심 거리(span + pole_od = 2767.4)를 AI 가 계산해 두었는지 봅니다.

섹션 제목: “3. 부품 7종을 만들고 Link 로 조립하게 한다”
이렇게 말한다
파라미터를 Spreadsheet Params 로 넣고 Body 7종(Pole·Bar·Tube·Gusset·BasePlate·CapPlate·Foundation)을 만들어 Frame 그룹에 Link 로 조립해줘. 원본 Body 는 숨기고, 재계산해서 Invalid 없는지와 전체 bbox 알려주고 iso 로 보여줘.

AI 가 하는 일 — 1·2단계 표의 값으로 Body 를 종류당 하나씩 만듭니다. 기둥은 원 2개(OD·ID 는 Params.pole_od 수식) Pad 에 앞면(-Y) 벽만 뚫는 점검구·케이블 인입구 Pocket. 가로 파이프는 소재 2557.1 로 Pad 한 뒤 양 끝을 기둥 곡면(기둥 중심 ±1383.7 의 Ø267.4 원)으로 코핑하고 Ø50 구멍 5개. 각관은 150×100×4.5 를 4500 올리고 뒷면을 기둥 곡면으로 코핑, 앞면에 Ø50 20개 + Ø8 80개(한 스케치에 100개). 거싯은 BRACKET1 모양 폴리곤, 베이스·캡·기초는 Pad 하나씩. 그다음 App::Link 27개(기둥 2·캡 2·베이스 2·기초 2·각관 2·거싯 16·가로 파이프 1)를 Placement 로 배치합니다. 기둥 중심 거리 2767.4, 코핑 깊이 28.6 같은 계산값은 AI 가 낸 자릿수 그대로 씁니다.

확인하기 — 트리에 Params, 숨긴 Body 7개, Frame 아래 Link 27개. 스크린샷에서 기둥 두 개 사이에 가로 파이프가 걸리고 각관이 앞면에 붙어 있으면 성공입니다. 기초 아랫면 z 가 −1500 이면 2단계 가정이 반영된 것입니다.

이렇게 말한다
Frame 안 부품끼리 간섭 검사해줘. 코핑 부위(가로 파이프–기둥, 각관–기둥)는 접촉이어야 하고 겹치면 안 돼. 맞으면 C:\work\pole\pole_frame.FCStd 로 저장해줘.

AI 가 하는 일 — 부품 쌍 351개의 최소 거리와 간섭 부피를 검사합니다. 바운딩 박스가 떨어진 쌍(309개)은 계산 없이 건너뜁니다. 간섭이 없으면 저장합니다.

확인하기 — 코핑 부위는 «접촉(거리 0, 간섭 0)»이고 간섭 부피가 0 이어야 합니다.

항목 성공 기준
읽기 부품표에서 파이프 규격 2종, 치수 2500, MULTILEADER 개구부 2개, BRACKET1 블록을 읽어 냄. 정면도 216 vs 부품표 267.4 어긋남을 보고
파라미터 Spreadsheet Params 에 별칭으로 등록, 피처 치수가 수식으로 연결
부품 Body 7종 모두 유효, 스케치 DoF 0
조립 Link 27개, Invalid 0, 코핑 부위 접촉·간섭 0
가정 AI 가 정한 값(각관 두께·기초 깊이·스나이프 근사)이 모두 표로 나와 승인됨. 뜻이 불명확한 치수 2개는 모델에 없음
  • DXF 를 FreeCAD 로 열었더니 2분 넘게 걸리고 객체가 수백 개 — FreeCAD 의 DXF 가져오기는 실크·치수 폴리라인까지 전부 Draft 객체로 만듭니다. 그래서 ezdxf 로 필요한 것만 뽑습니다. 실습 3 과 같은 이유입니다.
  • AI 가 정면도의 216 을 기둥 지름으로 썼다 — 「부품표를 따르라」고 다시 말합니다. 도면·부품표가 다를 때 무엇을 따를지는 사람이 정합니다.
  • 한 번에 다 만들다 FreeCAD 가 멈췄다 — 긴 파이썬 실행은 중단할 수 없습니다. 끝나길 기다리거나 강제 종료하고, 부품 단위로 나눠 다시 시킵니다.
  • 떨어진 Pad 를 한 Body 에 넣으려다 실패 — 거싯 8장을 Body 하나에 Pad 8개로 만들면 안 됩니다. 거싯은 Body 하나 + Link 8개입니다.
  • 간섭 검사가 오래 걸린다 — 27개면 몇 초지만 더 큰 어셈블리는 부품 이름을 좁혀 여러 번 나눠 부릅니다.
  • Ø 기호가 “□” 나 “%%C” 로 보인다 — DXF 글꼴 문제로 지름 기호가 깨진 것입니다. 값은 그대로 지름입니다.
  • 실습 7 방식으로 Frame 그룹의 어셈블리 도면(정면·평면·상세 2개·치수 13개)을 만들어 봅니다. 원본 기록에서는 87초가 걸렸습니다.
  • 실습 9 방식으로 각관 Ø50 구멍 하나에 옆으로 500 N 을 걸어 구멍 주변 응력을 봅니다.
  • 「기둥은 STEEL, 기초는 밀도 2.4」로 전체 질량과 무게중심을 물어봅니다.
  • Params 시트에서 span 을 3000 으로 바꾸고 재계산해 가로 파이프와 Link 위치가 따라오는지(안 따라오면 어디를 수식으로 바꿔야 하는지) AI 에게 물어봅니다.
단계 기능
DXF 읽기 AI 툴 쪽 파이썬 + ezdxf (FreeCAD 밖)
파라미터·피처 쌓기 build_features (params → Spreadsheet, circles·polygons·rect·pocket through/midplane)
Link 배치·그룹 execute_code (App::Link, Placement)
간섭·질량 check_interference, get_mass_properties
확인·저장 tracked_recompute, get_screenshot, save_document

원본 기록: examples/pole_frame_from_dxf.py