반응형
■ 디지털 자산 가치 극대화
보유한 수천 장의 2D 도면을 3D 모델로 전환하는 것은 단순히 '그림을 입체로 바꾸는 것' 이상의 디지털 자산 가치 극대화를 의미합니다. 특히 제조 및 엔지니어링 환경에서 기대할 수 있는 핵심 이점은 다음과 같습니다.
1. 설계 및 검증 단계의 시간 단축
- 간섭 체크 및 시뮬레이션: 2D 도면만으로는 육안으로 확인하기 어려운 부품 간의 간섭(Interference)을 3D 공간에서 즉시 시뮬레이션할 수 있습니다. 이는 실제 시제품 제작(Proto) 횟수를 획기적으로 줄여줍니다.
- 조립성 검토: 부품 간의 맞물림이나 조립 순서를 가상 환경에서 미리 검증하여 생산 현장에서의 시행착오를 방지합니다.
2. 설계 자산의 재활용성(Reuse) 및 표준화
- 파라메트릭 설계로의 전환: 3D 모델로 관리하면 치수만 바꾸어 새로운 부품을 빠르게 파생시킬 수 있습니다. 수천 장의 2D 도면을 관리할 때 겪는 "이전 모델의 어느 치수를 참고했지?"라는 고민을 해결합니다.
- 부품 표준화: 유사한 형상의 부품을 자동으로 분류하여 중복 설계를 방지하고, 회사가 보유한 설계 노하우(IP)를 데이터베이스화하여 관리할 수 있습니다.
3. 생산 및 품질 관리 효율화
- 자동 CAM/CAE 연동: 3D 모델은 가공 기계(CNC)나 사출 금형 설계를 위한 CAM 데이터로 직접 변환이 가능합니다. 수동으로 도면을 해석해 수치를 입력할 필요가 없어 휴먼 에러가 사라집니다.
- 직관적인 의사소통: 2D 도면은 숙련된 엔지니어만 해석 가능하지만, 3D 모델은 영업, 구매, 현장 작업자 등 누구나 형상을 즉각적으로 이해할 수 있어 부서 간 의사소통 비용이 획기적으로 낮아집니다.
4. 도면의 디지털 트랜스포메이션(DX)
- 레거시 데이터의 자산화: 수천 장의 종이/PDF 도면은 단순한 기록물에 불과하지만, 3D 모델로 변환되는 순간 AI가 학습 가능한 '데이터'가 됩니다.
- 유지보수 및 사후 관리: 제품 납품 후 유지보수 상황 발생 시, 3D 모델을 통해 즉시 필요한 부품 형상을 찾아내고 수리 과정을 가이드할 수 있어 고객 만족도가 높아집니다.
■ 2D에서 3D로 전환 시 고려해야 할 단계
단순히 모델을 만드는 것을 넘어, 이 전환 과정을 전략적인 시스템으로 구축해야 합니다.
- 데이터 클렌징: 수천 장의 도면 중 자주 사용되는 핵심 부품(Top-runner)을 우선순위로 선정하여 작업을 시작합니다.
- CSG 기반 모델링 표준화: 말씀하신 CSG 방식을 채택하면, 향후 설계자가 변경될 때도 복잡한 스케치 구속 조건에 얽매이지 않고 안정적인 모델 관리가 가능합니다.
- 검증 로직 구축: 3D로 변환된 모델이 원본 2D 도면의 치수와 일치하는지 자동으로 비교하는 검증 프로세스를 병행해야 합니다.
| 2D 도면의 3D화는 단순한 변환 작업이 아니라 '설계 부서의 업무 방식을 데이터 중심(Data-driven)으로 바꾸는 강력한 체질 개선 작업'입니다. 이러한 전환 작업을 시작할 때, 가장 먼저 시급하게 3D화해야 할 '핵심 부품군'이 명확히 정해져 있으신가요? 그 우선순위에 따라 구현 난이도가 달라질 수 있습니다. |
■ 시스템 구현

1. 도면 이미지 → 데이터 구조화 단계 (AI 사용)
- 이것은 단순 이미지 처리(OpenCV 등)로 해결 불가능합니다.
- 규칙 기반 파싱으로는 현실의 다양한 도면 스타일을 감당할 수 없습니다.
| 도면 이미지에서 읽어야 할 것들: | AI 포함 구조 (실용적) |
| 치수선 ──────→ "Ø25 ±0.02" 어디에 적용되는 치수인가? 형상선 ──────→ 이 선이 구멍인가, 돌출인가, 모따기인가? 기호 ──────→ ⊥, //, △ 등 GD&T 기호 해석 투영법 ──────→ 1각법/3각법 판단 숨은선 ──────→ 점선이 의미하는 내부 형상 단면도 ──────→ A-A 단면이 어떤 부위를 자른 것인가? |
도면 이미지 │ ▼ Claude Vision API (1회 호출) │ → 형상 파악, 치수 추출, 관계 해석 ▼ JSON 데이터 구조 { "features": [ {"type": "box", "w": 100, "h": 50, "d": 30}, {"type": "cylinder", "r": 10, "h": 50, "position": [25, 25, 0], "op": "cut"} ] } │ ▼ CSG 모델링 코드 (AI 없이 자동 실행, JSON → CSG 모델링 엔진) │ ▼ .FCStd / .STEP 파일 |
가장 효율적인 구조는: AI를 "도면 해석기"로만 사용하고, 모델링 엔진은 완전히 코드로 구현하는 것입니다.
2. AI를 사용하여 데이터 구조화
프롬프트에 "규칙"을 명시 해야 합니다. ✅ AI에게 별도의 학습 과정 없이 바로 사용 가능 합니다. 프롬프트 자체가 "지시서" 역할을 합니다.
| prompt = """ 이 도면 이미지를 분석하여 아래 JSON 형식으로 출력하세요. 규칙: - 치수선의 숫자를 정확히 읽을 것 - 투영법(1각/3각)을 판단할 것 - 구멍은 "cut" 타입으로 표현할 것 - 단위는 mm로 통일할 것 출력 형식: { "projection": "third_angle", "features": [...] } """ |
3.검증 방법
| STEP 1: 자동 구조 검증 (즉시) - JSON 스키마 유효성 체크 - 필수 필드 존재 여부 - 치수값 범위 이상 감지 |
STEP 1: 자동 구조 검증 코드
import json
from jsonschema import validate
# JSON 스키마 정의
DRAWING_SCHEMA = {
"type": "object",
"required": ["projection", "unit", "features"],
"properties": {
"projection": {"enum": ["first_angle", "third_angle"]},
"unit": {"enum": ["mm", "inch"]},
"features": {
"type": "array",
"minItems": 1,
"items": {
"required": ["type", "operation"],
"properties": {
"type": {"enum": ["box", "cylinder", "chamfer", "fillet"]},
"operation": {"enum": ["add", "cut"]},
"dimensions": {"type": "object"}
}
}
}
}
}
def validate_json(json_data):
try:
validate(instance=json_data, schema=DRAWING_SCHEMA)
# 치수 이상값 체크
for f in json_data["features"]:
dims = f.get("dimensions", {})
for key, val in dims.items():
if val <= 0:
raise ValueError(f"치수 오류: {key} = {val}")
if val > 10000:
raise ValueError(f"비정상 치수: {key} = {val}mm")
print("✅ JSON 구조 검증 통과")
return True
except Exception as e:
print(f"❌ 검증 실패: {e}")
return False
| STEP 2: 역검증 (AI 재활용) - JSON → 렌더링 이미지 생성 - 원본 도면 이미지와 AI가 비교 - 차이점 리포트 출력 |
STEP 2: AI 역검증 (핵심)
def reverse_verify(original_image_path, json_data):
"""
원본 도면 + 생성된 JSON을 AI에게 동시에 제공
→ AI가 불일치 항목을 스스로 찾아냄
"""
with open(original_image_path, "rb") as f:
image_data = base64.b64encode(f.read()).decode()
verify_prompt = f"""
[원본 도면 이미지]와 [생성된 JSON]을 비교하세요.
생성된 JSON:
{json.dumps(json_data, ensure_ascii=False, indent=2)}
검증 항목:
1. 모든 치수가 도면과 일치하는가?
2. 누락된 형상이 있는가?
3. 구멍/돌출 방향이 맞는가?
4. 전체적인 형상이 도면과 일치하는가?
결과를 아래 형식으로만 출력:
{{
"match": true/false,
"confidence": 0~100,
"errors": ["오류1", "오류2", ...],
"warnings": ["주의1", ...]
}}
"""
# Claude API 호출 (이미지 + JSON 동시 전송)
response = call_claude_api(image_data, verify_prompt)
return response
STEP 3: FreeCAD 치수 역추출 검증
def verify_with_freecad(json_data, fcstd_path):
"""
FreeCAD 모델에서 실제 치수를 측정하여
JSON 값과 자동 비교
"""
script = f"""
import FreeCAD
import Part
doc = FreeCAD.openDocument("{fcstd_path}")
obj = doc.Objects[0]
bb = obj.Shape.BoundBox
result = {{
"actual_x": bb.XLength,
"actual_y": bb.YLength,
"actual_z": bb.ZLength,
"volume": obj.Shape.Volume
}}
import json
print(json.dumps(result))
"""
# FreeCADCmd로 실행 후 결과 파싱
output = run_freecadcmd(script)
actual = json.loads(output)
# JSON 기대값과 비교
expected = json_data["features"][0]["dimensions"]
errors = []
tolerance = 0.01 # 허용 오차 0.01mm
if abs(actual["actual_x"] - expected["width"]) > tolerance:
errors.append(f"X 불일치: 기대 {expected['width']} / 실제 {actual['actual_x']}")
return errors
전체 파이프라인 요약
도면 이미지
│
▼
Claude Vision → JSON 생성
│
├── STEP 1: 스키마 자동 검증 (0.1초)
│ ↓ 실패시 → AI 재생성 요청
│
├── STEP 2: AI 역검증 (2~3초, 소액 비용)
│ ↓ 신뢰도 < 90% → 사람 검토 요청
│
├── STEP 3: FreeCAD 치수 검증 (자동)
│ ↓ 오차 > 0.01mm → 오류 리포트
│
└── ✅ 검증 완료 → JSON 확정 저장
아키텍처 다이어그램

반응형
'업무 자동화 > FreeCAD' 카테고리의 다른 글
| 2D(PDF) 파일 →JSON 파일 변환 (0) | 2026.06.28 |
|---|---|
| 2D(PDF) 파일 → 3D로 변환 : JSON 파일 고도화 (0) | 2026.06.27 |
| 도면 이미지로 3D 모델 만들기 (0) | 2026.06.26 |
| 설계 검증 체크 리스트 데이터베이스 (0) | 2026.06.24 |
| Feature 기반 3D CAD를 데이터베이스로 바라보기 (0) | 2026.06.23 |