# 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-검증-체크리스트) --- ## 1. 총칙 ### 1.1 목적 본 지침서는 DXF 파일만으로 P&ID 도면의 다음 정보를 100% 자동 추출할 수 있도록 AutoCAD 작업 시 준수해야 할 규칙을 정의합니다: 1. **태그명**: 장비, 펌프, 계측기기, 밸브의 고유 식별자 2. **설비 인식**: 장비 타입 판별 및 위치 파악 3. **연결관계**: 배관과 장비의 연결, 단일 장비에 연결된 계측기기/펌프/밸브 4. **흐름방향**: 유체의 이동 방향 5. **설비 사양**: SIZE, VOLUME, MATERIAL 등 도면 내 장비 정보 ### 1.2 핵심 원칙 | 원칙 | 설명 | |------|------| | **블록 우선** | 모든 심볼은 블록(Block/INSERT)으로 작성 | | **레이어 분리** | 요소별로 레이어를 명확히 분리 | | **텍스트 표준화** | 태그명은 표준 형식으로 TEXT 엔티티 사용 | | **속성 활용** | 블록 속성(Attribute)으로 메타데이터 저장 | | **좌표 정렬** | 연결점은 정확한 좌표로 맞닿게 작성 | --- ## 2. 레이어 규칙 ### 2.1 필수 레이어 목록 다음 레이어를 반드시 생성하고 요소별로 분리하여 작성해야 합니다: | 레이어명 | 용도 | 필수 | |----------|------|------| | `EQUIPMENT` | 주요 설비 (탱크, 컬럼, 히터, 반응기) | ✅ | | `PUMP` | 펌프 | ✅ | | `VALVE` | 밸브 (모든 타입) | ✅ | | `INSTRUMENT` | 계측기기 (센서, 트랜스미터, 컨트롤러) | ✅ | | `PROCESS_LINE` | 공정 배관 | ✅ | | `STEAM_LINE` | 스팀 배관 | ✅ | | `WATER_LINE` | 물 배관 | ✅ | | `ELECTRIC_SIGNAL` | 전기 신호 라인 (제어선) | ✅ | | `TAG_TEXT` | 태그명 텍스트 | ✅ | | `PIPELINE_NO` | 파이프 라인 번호 | ✅ | | `FLOW_ARROW` | 흐름 방향 화살표 | ✅ | | `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 | | `INST_INDICATOR` | 지시기 | TI-10103 | | `INST_CONTROLLER` | 컨트롤러 | FICQ-10101 | | `INST_GAUGE` | 게이지 | PG-10101 | | `FLOW_ARROW` | 흐름 방향 화살표 | | ### 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 태그명 텍스트 각 장비/밸브/계측기기 옆에 태그명을 TEXT 엔티티로 반드시 작성합니다: | 규칙 | 내용 | |------|------| | 레이어 | `TAG_TEXT` 레이어 사용 | | 형식 | `[접두사]-[번호]` (예: `T-10100`, `P-10101`, `FCV-10101`) | | 위치 | 장비 블록에서 10~20 단위 떨어진 곳에 배치 | | 폰트 | 표준 폰트 (고딕, Arial) — 특수 폰트 금지 | | 회전 | 0도 (수평) — 회전된 텍스트 금지 | ### 4.2 파이프 라인 번호 배관 옆에 파이프 라인 번호를 TEXT 엔티티로 작성합니다: | 규칙 | 내용 | |------|------| | 레이어 | `PIPELINE_NO` 레이어 사용 | | 형식 | `[유체코드]-[라인번호]-[규격]-[등급]-[재질]` | | 예시 | `P-10101-25A-F1A-n` | | 위치 | 배관 라인에서 5~10 단위 떨어진 곳에 배치 | ### 4.3 금지 사항 - **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. 연결점은 LINE 엔티티의 시작/끝 좌표가 정확히 일치해야 함 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 배관 라인 작성 규칙 모든 배관은 LINE 또는 LWPOLYLINE 엔티티로 작성하며, 다음 규칙을 따릅니다: | 규칙 | 내용 | |------|------| | 레이어 | 배관 타입별 레이어 사용 (`PROCESS_LINE`, `STEAM_LINE`, `WATER_LINE`) | | 연결점 | LINE의 시작/끝 좌표가 설비 블록 연결점과 정확히 일치 | | 연속성 | 배관 경로가 끊기지 않도록 연속적인 LINE 작성 | | 교차 | 배관 교차점은 좌표가 정확히 일치 (0.5 단위 이내) | ### 6.2 배관-설비 연결 추출 로직 ``` 1. 설비 블록의 연결점 좌표 확인 2. 동일 좌표에서 시작하는 PROCESS_LINE 레이어의 LINE 찾기 3. LINE을 따라 다음 설비 블록까지 추적 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 밸브-배관 연결 규칙 밸브는 배관 라인 위에 배치하며, 연결점이 정확히 맞닿게 작성합니다: ``` 배관: (1700, 1755) → (1720, 1755) 밸브 입구: (1720, 1755) 밸브 출구: (1730, 1755) 배관: (1730, 1755) → (1750, 1755) ``` **추출 로직**: 1. 배관 LINE의 끝점 확인 2. 동일 좌표에 밸브 블록이 있는지 확인 3. 밸브 출구에서 계속되는 배관 LINE 추적 4. 연결 관계: `배관 → 밸브 → 배관` --- ## 7. 흐름 방향(Flow Direction) 규칙 ### 7.1 화살표 블록 사용 의무 **모든 배관 라인의 흐름 방향은 화살표 블록으로 명시해야 합니다.** | 규칙 | 내용 | |------|------| | 블록명 | `FLOW_ARROW` | | 레이어 | `FLOW_ARROW` | | 위치 | 배관 라인 중간 또는 끝에 배치 | | 회전 | 흐름 방향에 맞게 회전 (0°=우측, 90°=하측) | ### 7.2 화살표 블록 속성 ``` 블록명: FLOW_ARROW 속성: DIRECTION = RIGHT / LEFT / UP / DOWN PIPELINE = P-10101-25A-F1A-n (연결된 파이프 라인 번호) ``` ### 7.3 흐름 방향 추출 로직 ``` 1. FLOW_ARROW 블록 찾기 2. INSERT.dxf.rotation으로 방향 확인 - 0° = 우측 흐름 (→) - 180° = 좌측 흐름 (←) - 90° = 상측 흐름 (↑) - 270° = 하측 흐름 (↓) 3. 화살표 위치에서 연결된 배관 라인 찾기 4. 방향 정보 기록: [배관] → [방향] ``` ### 7.4 탱크/컬럼 화살표 심볼 탱크와 컬럼은 기존처럼 **화살표 모양 경계선**을 유지할 수 있으나, 추가로 `FLOW_ARROW` 블록을 배관 라인에 배치해야 합니다: ``` T-10100 (탱크) └→ FLOW_ARROW (rotation=0°, RIGHT) └→ 배관: 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 흐름 방향 검증 - [ ] 모든 배관 라인에 FLOW_ARROW 블록이 배치되었는가? - [ ] 화살표 회전 각도가 흐름 방향과 일치하는가? - [ ] 분기점/합류점에 화살표가 배치되었는가? ### 9.5 텍스트 검증 - [ ] 모든 태그명이 TAG_TEXT 레이어에 TEXT 엔티티로 작성되었는가? - [ ] 태그명 형식이 표준을 따르는가? (`T-10100`, `P-10101`) - [ ] 파이프 라인 번호가 PIPELINE_NO 레이어에 작성되었는가? - [ ] 특수 문자(%%U, %%d)가 없는가? ### 9.6 DXF 내보내기 검증 - [ ] DXF 버전이 R2018 이상인가? - [ ] 블록 정의가 정상적으로 내보내졌는가? - [ ] 블록 속성(Attribute)이 포함되었는가? - [ ] 레이어 정보가 유지되었는가?