네. **PCB CNC DRILL 프로그래밍 분석**은 일반적인 CNC 선반/밀링 프로그램 분석과 조금 다릅니다. PCB에서는 주로 **NC Drill(Excellon) 파일**을 분석해서 드릴 좌표, 공구 번호, 구멍 크기, 작업 순서를 파악하는 방식입니다.
예를 들어 다음과 같은 PCB Drill 프로그램이 있다고 하면:
```text
M48
;DRILL file
METRIC,TZ
T1C0.80
T2C1.00
%
T1
X1000Y2000
X1500Y2000
X1500Y2500
T2
X3000Y4000
M30
```
### 1. 프로그램 구조
| 코드 | 의미 |
| ------------ | ----------------------- |
| `M48` | Drill 프로그램의 시작 |
| `METRIC` | 단위가 mm |
| `TZ` | 좌표의 Zero Suppression 방식 |
| `T1C0.80` | T1 공구, 직경 0.80 mm |
| `T2C1.00` | T2 공구, 직경 1.00 mm |
| `%` | 헤더 종료 |
| `T1` | T1 공구 선택 |
| `X1000Y2000` | X=1000, Y=2000 위치에 드릴 |
| `T2` | T2 공구 선택 |
| `X3000Y4000` | 해당 위치에 드릴 |
| `M30` | 프로그램 종료 |
다만 **좌표값을 실제 mm로 어떻게 환산하는지는 Format 설정에 따라 달라집니다.** 예를 들어 `2:4`, `2:5` 등의 좌표 형식과 `LZ/TZ`에 따라서 `X1000Y2000`의 실제 위치가 달라질 수 있습니다.
---
### 2. PCB CNC Drill 분석 프로그램을 만든다면
예전에 말씀하신 **VB.NET으로 DRL 파일을 읽어서 G-Code를 생성하는 프로그램**과 연결하면 다음과 같은 구조가 가장 이해하기 쉽습니다.
```text
DRL 파일
↓
① Header 분석
↓
② 단위 분석
↓
③ 좌표 Format 분석
↓
④ Tool 목록 분석
↓
⑤ Tool별 Drill 좌표 추출
↓
⑥ 좌표값 실제 mm 변환
↓
⑦ Drill 순서 결정
↓
⑧ CNC용 G-Code 생성
↓
CNC Controller
```
특히 중요한 것은 **DRL → G-Code 변환**입니다.
예를 들어:
```text
T1C0.80
X1000Y2000
X1500Y2000
```
를 읽어서 CNC용으로:
```gcode
T1 M06
G00 X10.00 Y20.00
G81 Z-1.60 R0.50 F100
G80
...
```
처럼 변환할 수 있습니다.
다만 PCB CNC는 **기계의 Controller 종류**에 따라 G-Code 문법이 달라질 수 있습니다. 따라서 실제 프로그램을 만들 때는 먼저 **사용하는 CNC의 G/M 코드 체계**를 확인해야 합니다.
### 3. 분석할 때 가장 중요한 부분
PCB Drill 프로그래밍에서는 다음 6가지를 집중적으로 보면 됩니다.
1. **Tool 정의** — `T1C0.8`, `T2C1.0`
2. **단위** — `METRIC`, `INCH`
3. **좌표 형식** — `2:4`, `2:5` 등
4. **Zero Suppression** — `LZ`, `TZ`
5. **Drill 좌표** — `X`, `Y`
6. **Tool Change / Program End** — `T`, `M30` 등
그리고 실제 PCB 제조에서는 **PTH, NPTH, Slot, Via** 등이 별도의 Drill 데이터로 관리될 수 있기 때문에 단순히 X/Y만 읽는 것보다 조금 더 복잡해집니다.
원하시면 다음 단계로 **실제 PCB `.DRL` 파일 하나를 기준으로 `M48 → Tool 정의 → 좌표 → M30`까지 한 줄씩 분석하고, 이것을 VB.NET 프로그램으로 읽는 방법**까지 연결해서 설명드릴 수 있습니다.