你搜这标题,是想搞清楚一件事——市面宣传的"许可自动回收再分给别人用,设计师毫无感觉",底层到底靠啥保证不弹框、不崩图、不丢未保存草图。
直接答:无感知复用 = 应用层闲置计时器(Idle Timer)+ 会话保持/影子句柄(Session Keepalive),缺一都做不到。 只靠 FLEXlm TIMEOUT百分百误杀。我拿2026年院里 NX/Catia 调度实测说,不抄手册。
先说"无感知复用"指啥
场景复现:
- 设计师开 NX 拉草图,去开会 25 分钟(键鼠不动,无命令执行)
系统判定真闲置 → 悄悄 lmremove把 Token 释放回池,同事取到号开始画图 - 设计师回位,移动鼠标 → 调度捕获需 checkout → 后台向 ugslmd 重新申请,成功写入进程上下文
- NX 界面继续响应,不弹 License Lost,未保存 Part 完好
- 用户感到最多半秒微顿(重连时),其余时间完全不知道许可曾被收回。
- 这就是我们说的无感知复用(Transparent Reuse)。
缺了闲置计时器会怎样
原生 OPTIONS文件写法:
TIMEOUT 86400 900
它只按 lmstat心跳间隔判——
- CATIA/NX 偶尔后台刷新 license handle → 常被误判"活跃"不回收(浪费)
- 或相反,刚切回前台、正要操作 → 心跳恰过期 → 被干掉弹 -15 报错(误杀)
- 没有
应用层计时器监听 Windows 会话消息(WM_MOUSEMOVE / WM_KEYDOWN)并结合 COM 探 InCommand状态),根本分不清"人在想事儿盯着模型"和"人走了去吃饭"。 - 我早年只开 TIMEOUT,被高工追着骂过一次—— sketch 未保存全丢,再不敢裸用。
- 合格闲置计时器须做三件事全满足才触发回收:
- Windows 会话级键鼠无输入 ≥ N 分钟(我们 NX 设 15 min,Catia 20 min)
- 应用无活跃命令(不在 Sketch Edit / Update Assembly / Regen / DMU Play / Solver 通信回调)
- 视图未刷新 + 主窗口标题未变(防回收正 Save As 瞬间)
- 任一条件不满足→计时重置,不动 Token。
缺了会话保持机制会怎样
就算计时对了,回收时必须保留"影子句柄 / 会话映射":
- 记录:用户、机器名/MAC、IP、特征码、被回收的 Token 数
- 不销毁进程→CAD 内部状态全在
重获取时依映射快速向 lmgrdcheckout 同特征,写回原进程环境 - 若直接 lmremove且忘存上下文→重连时代码以为首次启动 checkout,偶尔成功,偶尔因特征选项微差报兼容警告,极端情况 NX 认为许可状态异常弹框。
- 我们用的调度在回收时打标签 [SHADOW_HOLD],重获取命中标签优先复用,失败才走标准新 checkout——这步很关键。

白名单怎么融入这套架构
关键机加白名单(高工专机 MAC+域账号 / CAE 前处理节点 / KBE 脚本机)→ 跳过闲置计时器,Token 常驻至主动退出。
白名单判断在计时器最外层——连倒计时都不启动,彻底避开误杀。
我们2026年配置值回顾:
| 项目 | 值 |
|---|
| NX ugraf 空闲回收 | 15 min(键鼠+无 cmd) |
| Catia V5 空闲回收 | 20 min |
| AutoCAD/MEP | 15 min |
| TC Rich Client | 25 min(Consumer 15 min) |
| 最大单次占用 | 6 h |
| 白名单 | 高工台式机、DMU/KBE 节点、TC 胖客户端专机 日志标记 [RECYCLE]/ [EXCLUDED]/ [REACQUIRE OK],月报拉审计。 |
怎么验证你家的"无感知"真无感
测三个场景(我们上生产前必跑):
- 去吃饭回来 → 晃鼠标,看是否需重新登录 CAD(不应)、是否草图还在(应在)
- 大装配 Update 中途故意不动 → 等超过 idle 阈值 → 确认不回收(命令忙标志保护)
- 网络闪断 3 秒重连 → 看重获取是否成功、有无 -15 弹框
- 任一项失败 = 计时器或会话保持没做好,别上线。
顺带有空写 FLEXlm lmremove 正确姿势 + NX/Catia COM InCommand 探测示例片段,想看留个言我抽空贴