# 17 · NXAI 刀具库使用说明

> 库文件：`D:\NX_AI\nx_templates\NXAI_刀具库.prt`（20 把刀，T1–T20）
> 生成：`tools\make_tool_lib.py`（journal）｜ 校验：`tools\tool_lib_check.py`
> 本说明对应任务卡 P10-07F（2026-10-20）。

---

## 一、三步把 20 把刀带进任意零件

```
① NX 打开 D:\NX_AI\nx_templates\NXAI_刀具库.prt
② 切到【机床视图】→ 点任意一把刀 → Ctrl+A 全选 → Ctrl+C 复制
③ 打开目标零件 → 切到【机床视图】→ 点 GENERIC_MACHINE → Ctrl+V 粘贴
```

粘贴完成后，20 把刀一次到位：**刀号 T、补偿号 H、刀补 D、φ、刃长、刃数、
holder 描述全部随刀带过来**，后处理直接出 T1–T20，不会再撞 T0。

> 机床视图切换：NX 左侧【工序导航器】空白处右键 → 【机床视图】（Machine View）。
> 粘贴目标位置：目标零件的机床视图里点一下 GENERIC_MACHINE（机床根节点）再 Ctrl+V，
> 刀具即挂到该机床上。

---

## 二、库内 20 把刀（T 号 = H 号 = D 号）

| T号 | 名称 | 类型 | φ(mm) | 刃长(mm) | 刃数 | 用途 |
|----|----|----|----|----|----|----|
| T1  | T01_D20平底   | 平底铣刀 | 20  | 45 | 4 | 大余量开粗主力 |
| T2  | T02_D16平底   | 平底铣刀 | 16  | 40 | 4 | 次开粗 |
| T3  | T03_D12平底   | 平底铣刀 | 12  | 30 | 4 | 通用粗/半精 |
| T4  | T04_D10平底   | 平底铣刀 | 10  | 25 | 4 | 中腔 |
| T5  | T05_D8平底    | 平底铣刀 | 8   | 20 | 4 | 精加工主力 |
| T6  | T06_D6平底    | 平底铣刀 | 6   | 18 | 4 | 小腔/清角 |
| T7  | T07_D4平底    | 平底铣刀 | 4   | 12 | 4 | 窄槽 |
| T8  | T08_D3平底    | 平底铣刀 | 3   | 8  | 4 | 细部 |
| T9  | T09_R6球刀    | 球刀(φ12 R6) | 12 | 30 | 2 | 曲面 |
| T10 | T10_R4球刀    | 球刀(φ8 R4)  | 8  | 24 | 2 | 小曲面 |
| T11 | T11_R3球刀    | 球刀(φ6 R3)  | 6  | 18 | 2 | 清根 |
| T12 | T12_R2球刀    | 球刀(φ4 R2)  | 4  | 12 | 2 | 细清根 |
| T13 | T13_倒角刀D10 | 倒角刀   | 10  | 15 | 4 | 沿边倒角 |
| T14 | T14_中心钻D3  | 中心钻   | 3   | 8  | 2 | 定心 |
| T15 | T15_钻头D3.3  | 钻头    | 3.3 | 20 | 2 | M4 底孔 |
| T16 | T16_钻头D5.5  | 钻头    | 5.5 | 25 | 2 | M6 底孔 |
| T17 | T17_钻头D6.8  | 钻头    | 6.8 | 30 | 2 | M8 底孔 |
| T18 | T18_钻头D8.5  | 钻头    | 8.5 | 35 | 2 | M10 底孔 |
| T19 | T19_丝锥M8    | 丝锥    | 8（螺距1.25）| 20 | — | 攻牙 M8×1.25 |
| T20 | T20_螺纹铣刀D10 | 螺纹铣刀 | 10（螺距1.5）| 25 | — | 铣螺纹 |

统一约定：

- **刀号 T = 补偿号 H = 刀补号 D**（T1/H1/D1 … T20/H20/D20），与机床刀套一一对应。
- **holder 描述 = BT40-ER32**（每把刀的「夹持描述」字段已写入，粘贴时随刀携带）。
- 总长（Height）= 刃长 + 20mm 装夹余量。
- 最小刀长规则（刃长 + 10mm）由校验工具数字核校；NX Open 无 MinToolLength 写入 API
  （`gen_templates.py` 头部已实证），实际装刀时请按「刃长+10mm」以上夹持。

---

## 三、核验方式（本次交付实测）

独立进程重新打开库文件读回（`tools\tool_lib_check.py`，证据 `状态\tool_lib_check.json`）：

```
✓ ① 刀具总数=20
✓ ② T号唯一且为 1–20（无 T0）
✓ ③ 每把 φ/刃长/刃数 与定义一致
✓ ④ holder 引用可读回：20/20 均为 BT40-ER32
✓ ⑤ T=H=D 三号一致
TOOL_LIB_CHECK_OK tools=20 T=1..20 唯一 无T0 holder=BT40-ER32
```

日常复核命令（会启动一次后台 NX，独立进程读回）：

```
powershell -File D:\NX_AI\core\nx_launch.ps1 -Version 2412 -Mode journal -Journal D:\NX_AI\tools\tool_lib_check.py
```

---

## 四、常见问题

1. **粘贴后刀号变了？**
   不会。刀号是刀具对象自带属性（TlNumberBuilder），复制粘贴原样携带；
   粘贴后用上面校验命令或【机床视图】逐把核对即可。
2. **目标零件已有同名刀？**
   NX 会把粘贴的刀改名为 `xxx_COPY`。建议先删掉目标零件里的旧刀再粘贴，
   或粘贴后核对刀号唯一性（T 号重复会在后处理出冲突）。
3. **holder 只是字符串描述？**
   是的。本库为离线环境，未接 NX 刀柄图形库，「夹持描述」字段写入 BT40-ER32
   供干涉检查规则与人工核对使用；若车间配置了刀柄库（.prt 图形装配），
   可在 NX 里对每把刀【编辑 → 夹持器】指定库刀柄，保存回自己的零件即可，
   不影响本库文件的复用。
4. **改刀参数后想回库？**
   直接重跑 `make_tool_lib.py` 会先把旧库备份为 `.bak_时间戳` 再重建，
   旧的自定义改动请在自己的零件里保留，不要改库文件本身。

---

## ⚠ 2026-10-21 更新：刀具库已扩到 72 把

原 20 把（T1-T20）只是最初版本。现在 `NXAI_刀具库.prt` 已扩到 **72 把、9 类**，
且**不预设 T 号**（复制到零件后由你按刀套顺序填 T1-T20）：

| 类型 | 数量 | 清单 |
|---|---|---|
| 平底铣刀 | 16 | D1/D1.5/D2/D2.5/D3/D4/D5/D6/D8/D10/D12/D14/D16/D20/D25/D32 |
| 球刀 | 9 | R0.5/R1/R1.5/R2/R3/R4/R5/R6/R8 |
| 圆鼻刀 | 8 | D6R0.5/D8R0.5/D10R1/D12R1/D16R0.8/D20R0.8/D25R1/D32R3 |
| 倒角刀 | 4 | C6-90/C10-90/C12-90/C16-90 |
| 中心钻 | 3 | SP3/SP5/SP8 |
| 钻头 | 16 | E2/E3/E3.3/E4.2/E5/E5.5/E6.8/E8/E8.5/E10/E10.2/E11/E12/E14/E16/E20 |
| 丝锥 | 8 | M3/M4/M5/M6/M8/M10/M12/M16 |
| 螺纹铣刀 | 4 | TM8/TM10/TM12/TM16 |
| 铰刀 | 4 | RE6/RE8/RE10/RE12 |

清单文件：`data\std\tool_template.json`（要加刀就改它，重跑 `tools\make_tool_lib2.py`）
