material-takeoff — design (추출 방법 후보·로드맵)
갱신일: 2026-06-11. 자재 소요량 자동 추출 방법 설계 단일 출처.
문제 정의
오토캐드 가구 도면에서 ① 판넬의 가로×세로 치수, ② 면적, ③ 수량, ④ 자재명(라벨)을 뽑아 소요량 표를 만든다. 사용자가 원하는 UX 중 하나 = "특정 면적에 커서를 올리면(또는 클릭하면) 그 영역을 자동으로 잡아 판넬 치수를 추출".
방법 후보
A. 클릭 픽포인트 → 경계 추적 (반자동) — 추천 1순위
- HATCH의 "내부 점 선택"과 같은 엔진. .NET이면
Editor.TraceBoundary(point, detectIslands)로 클릭 지점을 둘러싼 닫힌 경계를 폴리라인으로 생성 →GeometricExtents로 W×H,Area로 면적 → 테이블에 1행 적재. - 커서 hover 실시간 미리보기는
PointMonitor이벤트 + transient graphics로 가능하나, TraceBoundary가 무거워 hover마다 돌리면 느릴 수 있음 → 1차는 클릭 방식, hover 미리보기는 2차 개선. - COM(pywin32) 경로에서는
TraceBoundaryAPI가 없어-BOUNDARY커맨드 송신으로 우회(생성된 폴리라인을 마지막 엔티티로 회수). - 장점: 도면이 표준화돼 있지 않아도 동작, 사람이 "이게 판넬"이라는 의미 판단을 함, 치수 정확. 단점: 판넬당 클릭 1회 수작업.
- 클릭 직후 근접 텍스트(MText/Text)를 자동 후보로 보여줘 자재명 매칭까지 반자동화 가능.
B. 닫힌 폴리라인 일괄 스캔 (자동 후보 추출)
- 전 엔티티 순회: closed LWPOLYLINE → bounding box → W×H 후보 목록. 레이어명·크기 범위(판넬 치수대)·종횡비로 필터. 근접 MText/Text를 spatial join해 자재 라벨 부착.
- 전제: 판넬이 닫힌 폴리라인으로 그려져 있어야 함. 라인 4개로 그린 사각형이면 라인 클러스터링(끝점 연결 그래프)이 추가로 필요해 난도 상승 → Phase 0 진단으로 도면 실태 먼저 확인.
- 산출 = "후보 리스트"이지 확정이 아님 → 사람(또는 Claude) 검수 단계와 짝.
C. DIMENSION(치수) 객체 수확
- 도면에 이미 기입된 치수 엔티티의
Measurement값을 읽음 — 제도자가 직접 친 치수라 가장 신뢰도 높은 숫자. 치수선 위치로 어느 판넬의 치수인지 매칭. - 치수가 안 쳐진 판넬은 못 잡음 → B의 기하 추출과 교차 검증용으로 최적.
D. DXF 오프라인 파싱 (ezdxf)
- DWG→DXF 저장 후 Python
ezdxf로 AutoCAD 없이 배치 처리. B·C와 동일 로직을 CAD 밖에서 수행 — 테스트·자동화 쉽고 COM 불안정성 회피. CAD 미설치 PC에서도 동작. - 단점: 클릭형 인터랙션(A) 불가, DXF 변환 단계 1회 필요.
- Phase 0 진단 도구로도 최적(엔티티 통계 덤프).
E. 비전 (도면 이미지 + Claude)
- 도면을 PNG/PDF로 출력 → Claude 비전이 판넬 형상·치수 문자를 읽음. 좌표·치수 정밀도가 낮아 확정 산출용으로는 부적합, 검수·라벨 보조·구성 파악용. (autocad-mcp Phase 2에서 "대표 캐비닛 이미지 feasibility 테스트" 보류 항목과 동일 줄기.)
F. 가구→판넬 전개 룰베이스
- 도면에서는 가구 유닛 외형(W×H×D)만 뽑고, "이 유닛 = 판넬 N장(상판·하판·측판×2·등판·선반…)"의 전개는 룰베이스로 계산. autocad-mcp Phase 2 아키텍처 결정(구조 추출 + 구성 룰베이스 + Claude 추론 = 반자동 draft-then-review)과 동일.
- 도면 디테일(판넬 개별 작도 여부)에 의존하지 않고 소요량을 내는 유일한 경로. 단, 표준 구성 룰 확정 필요(기존 보류 항목).
- 별도 확인 가치: IX CAD(imos)는 가구가 파라메트릭 데이터일 가능성 — imos 내부 DB/API(imos.Api)로 판넬 구성을 직접 얻을 수 있으면 도면 기하 해석 자체가 불필요해질 수 있음.
비교 요약
| 방법 | 자동화 | 정확도 | 전제조건 | 난도 |
|---|---|---|---|---|
| A 클릭 경계추적 | 반자동 | 높음 | CAD 플러그인/COM | 중 |
| B 폴리라인 스캔 | 자동(후보) | 도면 의존 | 닫힌 폴리라인 작도 | 중 |
| C 치수 수확 | 자동 | 매우 높음 | 치수 기입된 도면 | 하 |
| D DXF 파싱 | 자동(배치) | B·C와 동일 | DXF 변환 | 하 |
| E 비전 | 자동(검수용) | 낮음 | 이미지 출력 | 하 |
| F 룰베이스 전개 | 자동 | 룰 의존 | 구성 룰 확정 | 상 |
추천 로드맵
- Phase 0 — 진단: 대표 도면 1장 → D(ezdxf) 또는 COM으로 엔티티 인벤토리 덤프(닫힌 폴리라인 비율·DIMENSION 유무·텍스트 분포·레이어). 이 결과가 B·C 실현성과 구현 수단(COM vs .NET)을 결정.
- Phase 1 — 반자동 MVP: A 클릭→경계→W×H/면적→표 적재→JSON/CSV export(+근접 텍스트 자재명 후보). 즉시 실무 투입 가능한 최소 형태.
- Phase 2 — 자동 후보: B(+C 교차검증) 일괄 추출 → Claude/사람 검수 → 확정 리스트.
- Phase 3 — 합류: F 룰베이스 + material-spec 원가·소요량 계산(phase3 후보)과 통합. imos 내부 데이터 접근 가능 여부를 이 단계 전에 확인.