# 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)
