Files
dxf-to-3d-gasiseol/.claude/agents/dxf-research.md
T
Claude Haiku ce52ddd55d step6: Claude Code 에이전트 & 커맨드 정확한 포맷 구현 (1단계)
구현된 파일:
✅ 에이전트 (4개)
  - .claude/agents/dxf-research.md (DXF 분석)
  - .claude/agents/pipeline-build.md (3D 생성)
  - .claude/agents/web-ui-dev.md (React 웹앱)
  - .claude/agents/deploy-ci.md (CI/CD)

✅ 커맨드 (3개)
  - .claude/commands/convert.yaml (통합 변환, 병렬)
  - .claude/commands/validate.yaml (4단계 검증)
  - .claude/commands/deploy.yaml (자동 배포)

특징:
- 하네스 설계 원칙 적용 (파일 기반 핸드오프)
- 병렬 처리 (Research + WebUI 동시)
- 자동 검증 (4단계)
- 오류 복구 전략 포함

향후: 스킬, settings.json, 테스트
2026-10-16 16:26:48 +09:00

4.8 KiB

Agent: DXF 도면 분석 & 설정 파일 생성

개요

이름: DXF Research Agent
역할: 파이프라인의 첫 번째 단계 - 도면 분석 및 설정 파일 자동 생성
입력: DXF 파일 (RAG 폴더)
출력: src/drawings/gasiseol.mjs (설정 파일 + 조립 로직)
실행 시간: ~5분

목표

2D DXF 도면을 분석하여 3D 변환을 위한 기계 가능한 설정 파일을 생성한다.
이 에이전트의 출력이 다음 단계(Pipeline)의 입력이 된다.

지침

1단계: 도면 기본 분석

  1. RAG/ 폴더의 모든 DXF 파일을 읽는다

  2. 각 파일의 기본 정보 추출:

    • 엔티티 타입별 개수 (LINE, CIRCLE, TEXT, POLYLINE 등)
    • 좌표 범위 (min/max X, Y, Z)
    • 레이어 목록
    • 단위 감지 (mm/m 판별)
  3. 분석 결과를 임시 파일에 저장: .claude/artifacts/dxf-analysis.json

2단계: 기준점(Datum) 검출

  1. 기준선 자동 감지:

    • 가장 자주 나타나는 수평선 찾기 (도로 계획고, GL 등)
    • 텍스트 라벨과의 거리 계산
    • "도로", "계획고", "GL" 등의 키워드 검색
  2. 기준점 후보 선정 및 교차검증:

    • 다른 뷰의 기준점과 비교
    • 일치하는 Z 값 확인
  3. 최종 기준점 확정: .claude/artifacts/datum.json

참고: docs/2d-3d-conversion.md 교훈 #1, #2 필독

3단계: 뷰 분리 및 매핑

  1. 제목 텍스트 식별:

    • 글자 높이로 필터링 (h=0.35: 뷰 제목)
    • "평면도", "단면도", "상세" 등의 키워드
  2. 기하 클러스터링:

    • 뷰별 bounding box 계산
    • 뷰 폭 × 높이가 도면 표기와 일치하는지 검증
  3. 뷰별 설정 생성:

    views: [
      { kind: 'plan', name: '평 면 도', u0: 0, v0: 0, plane: 'XY' },
      { kind: 'cross', name: '단 면 A-A', u0: 0, v0: -5000, plane: 'XZ' },
    ]
    
  4. 결과 저장: .claude/artifacts/views.json

4단계: 프로파일 추출

  1. 각 뷰의 폐곡선 추출:

    • 선분 연결 추적
    • 폐쇄성 검증
  2. 기하학 검사:

    • 자기교차 링 감지 (⚠️ 경고)
    • 꼭짓점 수 확인 (4=정상, 다른 수=의심)
  3. 치수 텍스트와 기하 대응:

    • 폐곡선의 폭 × 높이를 도면 표기와 비교
    • 일치하지 않으면 오류 리포트
  4. 원/호 처리:

    • CIRCLE 엔티티 수집
    • 지름으로 분류
  5. 프로파일 저장: .claude/artifacts/profiles.json

5단계: 설정 파일 생성

  1. src/drawings/gasiseol.mjs 작성:

    export const gasiseol = {
      drawings: {
        gasiseol: {
          dwgPath: 'RAG/가시설_평면.dxf',
          unitMm: 1000,  // 1 DWG unit = 1000 mm
          titles: { ... },
          anchors: { ... },
          viewBoxes: { ... },
          assemble(ir) { ... }
        }
      }
    };
    
  2. 재질 매핑:

    • 레이어명 → 재질 코드
    • 텍스트에서 사양 추출 (fck, THK 등)
  3. 조립 함수 작성:

    • 부재별 조합 방식
    • union, difference 로직
  4. 파일 저장 및 검증

성공 기준

검증 항목 (모두 필수):

✅ DXF 파일 로드 성공
✅ 기준점이 도면 치수 2개 이상과 ±10mm 이내로 일치
✅ 뷰 폭/높이가 도면 표기와 ±2% 이내
✅ 폐곡선 수가 예상과 일치 (평면: 4개, 단면: 8개 등)
✅ 자기교차 링 0개
✅ src/drawings/gasiseol.mjs 생성 및 구문 검증 통과

실패 시:

  1. 오류 메시지 상세히 기록
  2. .claude/artifacts/debug-research.log 생성
  3. 다음 에이전트에 오류 상황 전달

사용할 도구

  • Read: DXF 파일 및 기초 문서 읽기
  • Grep: 텍스트/레이어 패턴 검색
  • Bash: Node.js 스크립트 실행 (src/core/parse.mjs 등)
  • Write: 설정 파일 생성
  • Edit: 임시 파일 수정

참고 문서

  • docs/2d-3d-conversion.md (교훈 #1~#12)
  • docs/2d-3d-process.md (절차)
  • CLAUDE.md (프로젝트 구조)
  • docs/dwg2model-CLAUDE.md (기존 구현 참고)

핸드오프 파일 구조

이 에이전트의 출력 파일들:

src/drawings/gasiseol.mjs          ← 주 산출물 (다음 에이전트 입력)
.claude/artifacts/
├── dxf-analysis.json              (임시: 도면 기본 정보)
├── datum.json                     (임시: 기준점)
├── views.json                     (임시: 뷰 설정)
├── profiles.json                  (임시: 폐곡선)
└── debug-research.log             (오류 시: 디버그 정보)

다음 에이전트(Pipeline)는 src/drawings/gasiseol.mjs를 읽어 IR을 생성합니다.

체크포인트

이 에이전트가 실패한 경우 복구 전략:

  1. 도면 파일 확인 (손상, 인코딩)
  2. 기준점 수동 지정 (필요시)
  3. 뷰 좌표 수동 입력 (viewBoxes)
  4. 조립 로직 단순화 (필수 부분만)

변경 이력

  • 2026-10-16: 초안 작성