Files
ExperionCrawler/.rooBackup/2026-05-06-010900/정보추출용-캐드작업-지침서.md
2026-05-08 17:22:10 +09:00

580 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DXF 정보추출용 캐드 작업 지침서
**목적**: DXF 파일만으로 P&ID 도면의 모든 정보를 자동 추출할 수 있도록 AutoCAD 작업 시 준수해야 할 규칙
**대상**: P&ID 도면 작성자, CAD 운영자
**버전**: v1.0
**작성일**: 2026-05-06
---
## 목차
1. [총칙](#1-총칙)
2. [레이어 규칙](#2-레이어-규칙)
3. [블록(Block) 규칙](#3-블록block-규칙)
4. [텍스트 규칙](#4-텍스트-규칙)
5. [설비(Equipment) 규칙](#5-설비equipment-규칙)
6. [배관(Piping) 규칙](#6-배관piping-규칙)
7. [흐름 방향(Flow Direction) 규칙](#7-흐름-방향flow-direction-규칙)
8. [설비 사양 정보 규칙](#8-설비-사양-정보-규칙)
9. [검증 체크리스트](#9-검증-체크리스트)
10. [DXF 파일 저장 규칙](#10-dxf-파일-저장-규칙)
---
## 1. 총칙
### 1.1 목적
본 지침서는 DXF 파일만으로 P&ID 도면의 다음 정보를 100% 자동 추출할 수 있도록 AutoCAD 작업 시 준수해야 할 규칙을 정의합니다:
1. **태그명**: 장비, 펌프, 계측기기, 밸브의 고유 식별자
2. **설비 인식**: 장비 타입 판별 및 위치 파악
3. **연결관계**: 배관과 장비의 연결, 단일 장비에 연결된 계측기기/펌프/밸브
4. **흐름방향**: 유체의 이동 방향
5. **설비 사양**: SIZE, VOLUME, MATERIAL 등 도면 내 장비 정보
### 1.2 핵심 원칙
| 원칙 | 설명 |
|------|------|
| **블록 우선** | 모든 심볼은 블록(Block/INSERT)으로 작성 |
| **이중 저장** | TAG/SPEC은 블록 속성(기계용) + TEXT(사람용)으로 모두 저장 |
| **레이어 분리** | 요소별로 레이어를 명확히 분리 |
| **좌표 정렬** | 연결점은 정확한 좌표로 맞닿게 작성 |
---
## 2. 레이어 규칙
### 2.1 필수 레이어 목록
다음 레이어를 반드시 생성하고 요소별로 분리하여 작성해야 합니다:
| 레이어명 | 용도 | 필수 |
|----------|------|------|
| `EQUIPMENT` | 주요 설비 (탱크, 컬럼, 히터, 반응기) | ✅ |
| `PUMP` | 펌프 | ✅ |
| `VALVE` | 밸브 (모든 타입) | ✅ |
| `INSTRUMENT` | 계측기기 (센서, 트랜스미터, 컨트롤러) | ✅ |
| `PROCESS_LINE` | 공정 배관 (+ 흐름 화살표) | ✅ |
| `STEAM_LINE` | 스팀 배관 (+ 흐름 화살표) | ✅ |
| `WATER_LINE` | 물 배관 (+ 흐름 화살표) | ✅ |
| `AIR_LINE` | 공압 배관 (+ 흐름 화살표) | ✅ |
| `ELECTRIC_SIGNAL` | 전기 신호 라인 (제어선) | ✅ |
| `TAG_TEXT` | 태그명 텍스트 (사람이 읽기 위해 필수) | ✅ |
| `PIPELINE_NO` | 파이프 라인 번호 | ✅ |
| `SPEC_TEXT` | 설비 사양 텍스트 (사람이 읽기 위해 필수) | ✅ |
### 2.2 레이어 사용 규칙
1. **혼용 금지**: 한 레이어에 서로 다른 타입의 요소를 섞지 마세요
2. **0 레이어 금지**: 0 레이어에 작업 요소를 작성하지 마세요
3. **일관성**: 모든 도면에서 동일한 레이어명 사용
---
## 3. 블록(Block) 규칙
### 3.1 블록 사용 의무
**모든 설비/밸브/계측기기는 반드시 블록(Block Reference/INSERT)으로 작성해야 합니다.**
블록을 사용하면:
- `INSERT.dxf.name`으로 심볼 타입을 직접 식별 가능
- `INSERT.dxf.insert`로 정확한 위치 추출 가능
- 속성(Attribute)으로 태그명/사양 저장 가능
### 3.2 블록 명명 규칙
블록명은 다음 형식을 따릅니다:
```
[타입]_[서브타입]
```
| 블록명 | 설명 | 예시 |
|---------|------|------|
| `EQUIP_TANK` | 탱크 | T-10100 |
| `EQUIP_COLUMN` | 컬럼/분리탑 | C-10111 |
| `EQUIP_HEATER` | 히터/교환기 | E-10119 |
| `EQUIP_REACTOR` | 반응기 | R-10101 |
| `PUMP_CENTRIFUGAL` | 원심펌프 | P-10101 |
| `PUMP_DIAPHRAGM` | 다이어프램 펌프 | DP-10101 |
| `PUMP_VACUUM` | 진공펌프 | VP-10117 |
| `VALVE_GLOBE` | 글로브 밸브 | FCV-10101 |
| `VALVE_BALL` | 볼 밸브 | XV-10111 |
| `VALVE_BUTTERFLY` | 버터플라이 밸브 | BV-10100 |
| `VALVE_CHECK` | 체크 밸브 | |
| `VALVE_PSV` | 안전밸브 | PSV-10101 |
| `INST_TRANSMITTER` | 트랜스미터, 센서 | PT-10111, TE-10111A |
| `INST_CONTROLLER` | 컨트롤러 | FICQ-10101 |
| `INST_GAUGE` | 게이지 | PG-10101 |
### 3.3 블록 속성(Attribute) 규칙
각 블록에는 다음 속성을 반드시 포함합니다:
| 속성 태그 | 설명 | 예시 |
|-----------|------|------|
| `TAG` | 장비 태그명 | `T-10100` |
| `NAME` | 장비 명칭 | `FEED BUFFER TANK` |
| `SIZE` | 크기 | `Ø2,500 x 3,600H` |
| `VOLUME` | 용적 | `20.6M3` |
| `MATERIAL` | 재질 | `STS304` |
| `PRESSURE` | 압력 | `0.25MPa` |
| `TEMPERATURE` | 온도 | `80°C` |
**속성 작성 방법**:
1. AutoCAD에서 `ATTDEF` 명령으로 속성 정의
2. `BLOCK` 명령으로 블록 생성 시 속성 포함
3. `INSERT` 시 속성값 입력
---
## 4. 텍스트 규칙
### 4.1 태그명 텍스트 (TAG_TEXT)
**CAD 도면의 제1원칙은 사람이 읽기 위한 것입니다.** 각 장비/밸브/계측기기 옆에 태그명을 TEXT 엔티티로 반드시 작성합니다:
| 규칙 | 내용 |
|------|------|
| 레이어 | `TAG_TEXT` 레이어 사용 |
| 형식 | `[접두사]-[번호]` (예: `T-10100`, `P-10101`, `FCV-10101`) |
| 위치 | 장비 블록에서 10~20 단위 떨어진 곳에 배치 |
| 폰트 | 표준 폰트 (고딕, Arial) — 특수 폰트 금지, 캐드용 SHA 금지 |
| 회전 | 0도 (수평) — 회전된 텍스트 금지 |
**추출자 참고**: 태그명은 블록 속성(Attribute)의 `TAG` 필드가 "진실의 원천(Source of Truth)"입니다. TAG_TEXT는 사람이 읽기 위한 것이며, 추출 시 블록 속성을 우선하고 TEXT는 검증용 보조로 사용합니다.
### 4.2 파이프 라인 번호
배관 옆에 파이프 라인 번호를 TEXT 엔티티로 작성합니다:
| 규칙 | 내용 |
|------|------|
| 레이어 | `PIPELINE_NO` 레이어 사용 |
| 형식 | `[유체코드]-[라인번호]-[규격]-[등급]-[재질]` |
| 예시 | `P-10101-25A-F1A-n` |
| 위치 | 배관 라인에서 5~10 단위 떨어진 곳에 배치 |
### 4.3 사양 정보 텍스트 (SPEC_TEXT)
**도면 하단에 장비/계기 사양 정보를 TEXT로 반드시 작성합니다.** 사람이 도면을 볼 때 사양을 확인할 수 있어야 합니다:
| 규칙 | 내용 |
|------|------|
| 레이어 | `SPEC_TEXT` 레이어 사용 |
| 내용 | SIZE, VOLUME, MATERIAL, PRESSURE, TEMPERATURE 등 |
| 위치 | 도면 하단 또는 장비 블록 근처 |
**추출자 참고**: 사양 정보도 블록 속성(Attribute)이 "진실의 원천"입니다. SPEC_TEXT는 사람이 읽기 위한 것이며, 추출 시 블록 속성을 우선합니다.
### 4.4 텍스트 금지 사항
- **MTEXT 금지**: 단순 태그명은 TEXT 사용 (MTEXT는 다중 줄 설명용)
- **특수 문자 금지**: `%%U`, `%%d` 등 AutoCAD 제어 문자 사용 금지
- **한글 태그 금지**: 태그명은 영문/숫자/하이픈만 사용
---
## 5. 설비(Equipment) 규칙
### 5.1 설비 블록 작성 규칙
각 설비는 블록으로 작성하고, 다음 정보를 포함합니다:
**예시: T-10100 FEED BUFFER TANK**
```
블록명: EQUIP_TANK
위치: (X, Y) — 탱크 중심점
속성:
TAG = T-10100
NAME = FEED BUFFER TANK
SIZE = Ø2,500 x 3,600H
VOLUME = 20.6M3
MATERIAL = STS304
PRESSURE = ATM
TEMPERATURE = 80°C
```
### 5.2 설비-배관 연결점 규칙
설비 블록과 배관이 연결되는 지점은 **정확한 좌표**로 맞닿게 작성합니다:
```
탱크 출구: (1672.2, 1755.3)
배관 시작: (1672.2, 1755.3) ← 동일한 좌표
```
**규칙**:
1. 연결점은 LWPOLYLINE의 시작/끝 좌표가 정확히 일치해야 함
2. 연결점 간격 0.5 단위 이내로 허용
3. 연결점이 맞지 않으면 자동 추출 실패
### 5.3 설비-계측기 연결 규칙
설비에 연결된 계측기기는 `ELECTRIC_SIGNAL` 레이어의 선으로 연결합니다:
```
탱크(T-10100) → LT-10100 (레벨 트랜스미터)
연결선: ELECTRIC_SIGNAL 레이어
시작: 탱크 블록 좌표
종료: 계측기 블록 좌표
```
**추출 로직**:
1. 설비 블록 위치 확인
2. 동일 위치에서 시작하는 ELECTRIC_SIGNAL 라인 추적
3. 라인 끝점에 있는 계측기 블록 식별
4. 연결 관계 기록: `T-10100 → LT-10100`
---
## 6. 배관(Piping) 규칙
### 6.1 배관 라인 작성 규칙
모든 배관은 **LWPOLYLINE** 엔티티로 작성하며, 다음 규칙을 따릅니다:
| 규칙 | 내용 |
|------|------|
| 엔티티 | LWPOLYLINE 사용 (LINE 대신) — 흐름 화살표를 버텍스 너비로 표현 |
| 레이어 | 배관 타입별 레이어 사용 (`PROCESS_LINE`, `STEAM_LINE`, `WATER_LINE`, `AIR_LINE`) |
| 연결점 | LWPOLYLINE의 시작/끝 좌표가 설비 블록 연결점과 정확히 일치 |
| 연속성 | 배관 경로가 끊기지 않도록 연속적인 LWPOLYLINE 작성 |
| 교차 | 배관 교차점은 좌표가 정확히 일치 (0.5 단위 이내) |
| 화살표 | LWPOLYLINE의 끝점 버텍스 너비(`end_width`)로 흐름 방향 화살표 표현 |
### 6.2 배관-설비 연결 추출 로직
```
1. 설비 블록의 연결점 좌표 확인
2. 동일 좌표에서 시작하는 PROCESS_LINE 레이어의 LWPOLYLINE 찾기
3. LWPOLYLINE을 따라 다음 설비 블록까지 추적
4. 연결 관계 기록: [설비A] → [배관] → [설비B]
```
**예시**:
```
T-10100 출구: (1672.2, 1755.3)
→ PROCESS_LINE: (1672.2, 1755.3) → (1700.0, 1755.3)
→ P-10101 입구: (1700.0, 1755.3)
결과: T-10100 → P-10101 (배관: P-10101-25A-F1A-n)
```
### 6.3 밸브-배관 연결 규칙
밸브는 배관 라인 위에 배치하며, 연결점이 정확히 맞닿게 작성합니다:
```
LWPOLYLINE: (1700, 1755) → (1720, 1755)
밸브 입구: (1720, 1755)
밸브 출구: (1730, 1755)
LWPOLYLINE: (1730, 1755) → (1750, 1755)
```
**추출 로직**:
1. 배관 LWPOLYLINE의 끝점 확인
2. 동일 좌표에 밸브 블록이 있는지 확인
3. 밸브 출구에서 계속되는 배관 LWPOLYLINE 추적
4. 연결 관계: `배관 → 밸브 → 배관`
---
## 7. 흐름 방향(Flow Direction) 규칙
### 7.1 LWPOLYLINE 버텍스 너비 기반 화살표
**모든 배관 라인의 흐름 방향은 LWPOLYLINE 엔티티의 버텍스 너비로 명시해야 합니다.**
AutoCAD에서 `PEDIT` 명령으로 LWPOLYLINE의 끝점 너비를 넓히면 화살표 모양이 됩니다. 이 방식은 배관 라인과 화살표를 **단일 엔티티**로 표현하여 작업 효율과 추출 정확도를 동시에 높입니다.
| 규칙 | 내용 |
|------|------|
| 엔티티 | LWPOLYLINE (LINE이 아님) |
| 화살표 표현 | 끝점 버텍스의 `end_width` 속성으로 화살표 크기 지정 |
| 화살표 크기 | `end_width = 3~5` 단위 (배관 너비 `start_width = 0`과 명확히 구분) |
| 방향 판별 | `end_width > start_width`인 방향이 흐름 방향 |
| 레이어 | 배관과 동일 (`PROCESS_LINE`, `STEAM_LINE`, `WATER_LINE`) |
**작성 방법 (AutoCAD)**:
1. `PLINE` 명령으로 배관 경로 작성
2. `PEDIT` 명령 선택 → '너비(W)' 옵션
3. 시작 너비: `0`, 끝 너비: `5` 입력
4. 결과: 끝점에 화살표 모양의 넓은 버텍스 생성
**DXF 저장 구조**:
```
LWPOLYLINE (PROCESS_LINE 레이어)
Vertex 0: (100, 100) start_width=0, end_width=0
Vertex 1: (200, 100) start_width=0, end_width=5 ← 화살표 끝 (우측 흐름)
```
### 7.2 흐름 방향 추출 로직
```
1. LWPOLYLINE 엔티티 찾기 (PROCESS_LINE/STEAM_LINE/WATER_LINE 레이어)
2. 버텍스 목록 획득: vertices = entity.get_vertices()
3. 각 버텍스의 start_width / end_width 확인
4. end_width > 0인 버텍스가 있는 방향 = 흐름 방향
- 마지막 버텍스 end_width > 0 → 시작→끝 방향 (forward)
- 첫 번째 버텍스 start_width > 0 → 끝→시작 방향 (backward)
5. 방향 정보 기록: [배관] → [방향]
```
**추출 코드 예시**:
```python
vertices = list(entity.get_vertices())
if len(vertices) >= 2:
last = vertices[-1]
if hasattr(last, 'end_width') and last.end_width > 0:
flow_direction = "forward" # 시작→끝 방향
first = vertices[0]
if hasattr(first, 'start_width') and first.start_width > 0:
flow_direction = "backward" # 끝→시작 방향
```
### 7.3 양방향 화살표
양방향 흐름이 필요한 경우, 양쪽 끝 버텍스에 너비를 설정합니다:
```
LWPOLYLINE (PROCESS_LINE 레이어)
Vertex 0: (100, 100) start_width=5, end_width=0 ← 좌측 화살표
Vertex 1: (200, 100) start_width=0, end_width=5 ← 우측 화살표
```
### 7.4 탱크/컬럼 화살표 심볼
탱크와 컬럼은 기존처럼 **화살표 모양 경계선**을 유지할 수 있으나,
배관 라인은 LWPOLYLINE 버텍스 너비로 화살표를 표현해야 합니다:
```
T-10100 (탱크)
└→ LWPOLYLINE (end_width=5, forward)
└→ 배관: P-10101-25A-F1A-n
└→ P-10101 (펌프)
```
### 7.5 필수 설정 위치
화살표(버텍스 너비)는 다음 위치에 반드시 설정합니다:
1. **설비 출구**: 탱크/컬럼/히터에서 나가는 배관
2. **분기점**: 배관이 분기되는 지점
3. **합류점**: 배관이 합류하는 지점
4. **도면 경계**: 도면 밖으로 나가는 배관
---
## 8. 설비 사양 정보 규칙
### 8.1 사양 정보 저장 방법
설비 사양은 **블록 속성(Attribute)**으로 저장합니다. PDF에 표시되는 텍스트는 시각용이며, DXF 추출의 기준은 블록 속성입니다.
### 8.2 필수 속성 목록
각 설비 블록에 다음 속성을 반드시 포함합니다:
| 속성 태그 | 설명 | 예시 | 필수 |
|-----------|------|------|------|
| `TAG` | 장비 태그명 | `T-10100` | ✅ |
| `NAME` | 장비 명칭 | `FEED BUFFER TANK` | ✅ |
| `SIZE` | 크기 | `Ø2,500 x 3,600H` | ✅ |
| `VOLUME` | 용적 | `20.6M3` | ✅ |
| `MATERIAL` | 재질 | `STS304` | ✅ |
| `DESIGN_PRESSURE` | 설계 압력 | `0.25MPa` | ✅ |
| `OPERATING_PRESSURE` | 운전 압력 | `ATM` | ✅ |
| `DESIGN_TEMP` | 설계 온도 | `80°C` | ✅ |
| `OPERATING_TEMP` | 운전 온도 | `AMB` | ✅ |
| `INSULATION` | 단열 | `H50` | ❌ |
### 8.3 펌프 전용 속성
| 속성 태그 | 설명 | 예시 |
|-----------|------|------|
| `CAPACITY` | 용량 | `60L/min` |
| `RPM` | 회전수 | `3,520` |
| `TYPE` | 펌프 타입 | `CENTRIFUGAL` |
### 8.4 예시: T-10100 FEED BUFFER TANK
```
블록명: EQUIP_TANK
레이어: EQUIPMENT
위치: (1662.6, 1754.5)
속성:
TAG = T-10100
NAME = FEED BUFFER TANK
SIZE = Ø2,500 x 3,600H
VOLUME = 20.6M3
MATERIAL = STS304
DESIGN_PRESSURE = ATM
OPERATING_PRESSURE = ATM
DESIGN_TEMP = 80°C
OPERATING_TEMP = AMB
```
### 8.5 예시: P-10101 FEED PUMP
```
블록명: PUMP_CENTRIFUGAL
레이어: PUMP
위치: (2055.3, 1738.6)
속성:
TAG = P-10101
NAME = FEED PUMP
SIZE = 25A/20A
MATERIAL = STS316
CAPACITY = 60L/min
RPM = 3,520
DESIGN_PRESSURE = 0.25MPa
TYPE = CENTRIFUGAL
```
---
## 9. 검증 체크리스트
도면 작성 완료 후 다음 항목을 반드시 확인하세요:
### 9.1 블록 검증
- [ ] 모든 설비가 블록(Block/INSERT)으로 작성되었는가?
- [ ] 블록명이 표준 형식을 따르는가? (`EQUIP_TANK`, `PUMP_CENTRIFUGAL` 등)
- [ ] 모든 블록에 필수 속성(TAG, NAME, SIZE, MATERIAL)이 포함되었는가?
- [ ] 속성값이 정확한가?
### 9.2 레이어 검증
- [ ] 모든 요소가 올바른 레이어에 배치되었는가?
- [ ] 0 레이어에 작업 요소가 없는가?
- [ ] 레이어명이 표준 목록과 일치하는가?
### 9.3 연결점 검증
- [ ] 설비-배관 연결점 좌표가 정확히 일치하는가? (0.5 단위 이내)
- [ ] 배관 라인이 끊기지 않고 연속적인가?
- [ ] 밸브가 배관 라인 위에 정확히 배치되었는가?
### 9.4 흐름 방향 검증
- [ ] 모든 배관이 LWPOLYLINE 엔티티로 작성되었는가? (LINE이 아닌가?)
- [ ] 배관 끝점 버텍스의 end_width가 3 이상으로 설정되었는가?
- [ ] 버텍스 너비 방향이 실제 흐름 방향과 일치하는가?
- [ ] 분기점/합류점 배관에 버텍스 너비가 설정되었는가?
### 9.5 텍스트 검증
- [ ] 모든 태그명이 TAG_TEXT 레이어에 TEXT 엔티티로 작성되었는가? (사람이 읽기 위해)
- [ ] 모든 태그명이 블록 속성(Attribute)의 TAG 필드에 저장되었는가? (추출을 위해)
- [ ] TAG_TEXT와 블록 속성 TAG 값이 일치하는가?
- [ ] 태그명 형식이 표준을 따르는가? (`T-10100`, `P-10101`)
- [ ] 파이프 라인 번호가 PIPELINE_NO 레이어에 작성되었는가?
- [ ] SPEC_TEXT 레이어에 사양 정보가 작성되었는가? (사람이 읽기 위해)
- [ ] 특수 문자(%%U, %%d)가 없는가?
### 9.6 DXF 내보내기 검증
- [ ] DXF 버전이 R2018 이상인가?
- [ ] 블록 정의가 정상적으로 내보내졌는가?
- [ ] 블록 속성(Attribute)이 포함되었는가?
- [ ] 레이어 정보가 유지되었는가?
---
## 10. DXF 파일 저장 규칙
### 10.1 1 도면 = 1 DXF 파일 원칙
**각 P&ID 도면은 반드시 별도의 DXF 파일로 저장합니다.**
| 규칙 | 내용 |
|------|------|
| 파일명 형식 | `[플랜트명]-drawing-[도면번호].dxf` |
| 예시 | `plant-10100-drawing-01.dxf`, `plant-10100-drawing-02.dxf` |
| 금지 | 여러 도면을 1개 DXF 파일에 포함하지 않음 |
**이유**:
- **매칭 연산량 감소**: 1개 파일에 N개 도면 → O(N²×M²) → 1개 도면/파일 → O(M²)
- **타임아웃 방지**: 처리량이 예측 가능하여 타임아웃 발생 제거
- **병렬 처리**: 파일 단위로 워커 분배 가능
- **에러 격리**: 1개 도면 실패가 다른 도면에 영향 없음
- **재처리 효율**: 변경된 도면만 재실행 가능
**CAD 작성자 참고**:
- AutoCAD 작업 시 여러 도면을 단일 DWG 파일로 작성해도 무방
- **DXF 내보내기 시** 도면 번호별로 분할하여 저장
### 10.2 AutoCAD DXF 내보내기 옵션
AutoCAD에서 DXF를 내보낼 때 다음 옵션을 반드시 설정합니다:
#### 필수 설정
| 옵션 | 설정값 | 이유 |
|------|--------|------|
| **DXF 버전** | **AutoCAD 2018 DXF** (또는 이후 버전) | ezdxf 호환성 보장 |
| **내보내기 범위** | **현재 도면(Current)** 또는 **선택(Selection)** | 불필요한 도면 제외 |
| **레이어** | **모든 레이어 포함** | 레이어 정보 필수 |
| **블록** | **블록 정의 포함** | 심볼 인식 필수 |
| **속성** | **속성 값 포함** | 태그명/사양 정보 필수 |
#### AutoCAD操作步骤
**방법 1: 다른 이름으로 저장 (권장)**
1. `파일``다른 이름으로 저장` 선택
2. 파일 형식: **`*.dxf`** 선택
3. 버전: **`AutoCAD 2018 DXF`** 선택
4. 파일명: `[플랜트명]-drawing-[도면번호].dxf` 형식
5. `저장` 클릭
**방법 2: 내보내기 명령**
1. `EXPORT` 또는 `DXFOUT` 명령 실행
2. 내보내기 범위: **현재 뷰(Current View)** 또는 **전체(Extents)**
3. 버전: **AutoCAD 2018** 이상 선택
4. 파일명 규칙 준수
#### 주의 사항
| 항목 | 내용 |
|------|------|
| **모델 스페이스 vs 레이아웃** | 모델 스페이스(Model Space)에서 작업한 경우, 모델 스페이스 내보내기 |
| **블록 정의** | DXF 내보내기 시 블록 정의(Block Definition)가 포함되는지 확인 |
| **속성 값** | 블록 속성(Attribute) 값이 텍스트로 저장되는지 확인 |
| **레이어 상태** | 숨겨진/잠긴 레이어도 포함되지만, 작업 요소는 반드시 ON/THAW 상태 |
| **0 레이어** | 0 레이어에 작업 요소가 없는지 확인 (9.2 체크리스트 참조) |
### 10.3 도면 분할 내보내기 워크플로우
여러 도면이 있는 DWG 파일을 DXF로 분할 내보낼 때:
1. **도면 영역 확인**: 각 도면의 Bounding Box 확인
2. **도면 1 내보내기**:
- 도면 1 영역으로 Zoom Extents
- `다른 이름으로 저장``plant-10100-drawing-01.dxf`
3. **도면 2 내보내기**:
- 도면 2 영역으로 Zoom Extents
- `다른 이름으로 저장``plant-10100-drawing-02.dxf`
4. **반복**: 모든 도면 완료까지 반복
> **참고**: 도면 분할이 번거로운 경우, Python 스크립트로 자동 분할 가능
> (bbox 기반 분할 로직은 `extractor.py`의 `split_drawings()` 메서드 참조)
### 10.4 DXF 파일 검증
내보내기 후 다음 항목을 확인하세요:
- [ ] 파일이 정상적으로 열리는가? (ezdxf 또는 AutoCAD로 확인)
- [ ] 블록 정의가 포함되어 있는가?
- [ ] 블록 속성(Attribute) 값이 있는가?
- [ ] 레이어 정보가 유지되었는가?
- [ ] LWPOLYLINE 버텍스 너비(end_width)가 유지되었는가?
- [ ] 파일 크기가 예상 범위 내인가? (도면 1개당 1~5MB)