ARTICLE DETAIL

深度技术解析

探索许可管理的核心技术与实践应用

获取专业知识,提升技术能力

深度阅读
专业内容
知识学习
技能提升
深入探索
技术洞察

NX journal交互能跑,run_journal批处理却报错:先看当前部件

白天在 NX 里录一段改注释的 journal,点运行,注释按预期替换;同一份文件交给 run_journal 在批处理里跑,却在当前部件为空后,下一行取注释时报错 NullReferenceException。最容易走偏的,是把它当成许可不够,先去查服务器。这个错误说的是某个对象是空的,而不是某项授权取不到。

报错停在哪一行,比报错内容更能说明问题

原问里的 journal 是 NX 8.5 录制的:取当前显示的部件,遍历注释,替换一段文字。交互执行时一切正常,因为屏幕上确实开着一个部件,“当前显示部件”总有东西可取。

换成批处理,这一句就落空了。批处理没有 NX 的交互界面,也不存在“你正在看的那个部件”。同一份代码在两种执行方式下读到的是不同的会话状态,报错行号正好指出这一点。

对比项交互执行批处理执行
界面NX 窗口与菜单可用无界面,不能做显示类操作
当前部件由你打开的文件决定需脚本指定并打开
输出信息窗口、列表窗口由脚本提供,可转到标准输出
任务需人工判断、查看结果耗时较长、人工介入较少

第二行是关键。交互执行时,当前部件、当前视图都是“顺手就有”的状态,录制的代码会继承它们,看起来像代码自己完成了工作,实际是环境替它补了前提。

批处理不是把同一个窗口藏起来

Siemens 在 NX 2212 系列 NX Open Programmer's Guide 中区分了执行方式:交互模式运行在 NX 会话中,显示窗口、菜单和工具条可用;批处理模式没有交互界面,应用能访问部件模型,但不能执行显示类操作,用户界面需由应用提供。文档还说明,批处理应用只能从命令行启动,通常用于耗时较长、人工介入较少的任务。

窗口不存在,依赖窗口的状态也就不存在,凡是从“当前显示”“当前选择”取值的地方都要显式指定。另一层差别是安静:交互出错会弹提示,批处理里没人守着,错误只留在退出信息和日志里。

一次最小复测,把部件交进去

原问讨论中最终可用的做法,是把部件作为参数交给 journal,由它自己打开、处理、保存,再用命令行重跑一次:

1. 命令写全:run_journal 指向 journal 文件,用 -args 传入部件完整路径,路径带空格时加引号。

1. journal 接收参数,用打开部件的方法载入,再从会话取显示部件和工作部件,不假设已经有一个。

1. 处理完显式保存;不保存等于只在内存里改了一遍。

1. 把输出重定向到文本文件:讨论中的做法是,批处理下写入列表窗口的内容会送到标准输出。只重跑一次,留下命令、版本、部件路径和输出文件;仍失败说明还有前提没补上。

换机器、换账号、换启动方式时,只要这些前提写在 journal 里,结果至少不再依赖某个人打开了什么。

五个编号步骤卡依次为录制、回放、报错、补前提、核对,报错与补前提两卡用橙色标出,底部判据条写明先补会话前提、日志有功能名才查授权

什么情况才轮到查许可

NX Open 的许可检查按功能走。同一份文档说明,应用运行时使用基于功能的许可检查:只有所用能力对应的 NX 许可可用时才运行,生成几何需要建模许可,生成制图尺寸需要制图许可,标准是交互完成同样结果所需的许可集合。缺少许可时,界面弹出许可错误,缺失的功能许可名称写入 NX 日志,随后应用退出。

文档还说明:如果 NX 会话已保留某个许可,应用不会重复签出,而是继续用会话中已生效的那一份,应用取消加载时未使用的许可被释放;应用也可以用许可管理接口预留和释放功能许可,只有在没被其他应用占用时,释放的许可才回到公共池。所以占不占许可,不能只看进程是否开着。

左右两栏对照:左栏“代码与环境”列出取当前显示部件为空、报错停在行号、处理为传参打开保存;右栏“许可”列出按功能检查、缺功能许可写入日志并退出、处理为核对授权;底部条给出先后判据

版本关系要单独说明:原问发生在 NX 8.5,上述说明出自 NX 2212 系列文档。该文档限定 journal 回放限于 Windows 上的 Python、Visual Basic .NET 和 C# .NET,.NET journal 只能调用随 NX 链接的少数库,超出的功能需要编译成应用。

把这类任务纳入日常观察

批处理和自动化任务有个共同点:不吵。往往等到下一道工序要用文件时才发现。许可层面也一样,夜间提交的任务可能整段占着建模或制图许可,白天的人却在排队。

对已接入的 NX 浮动许可环境,浮点许可优化管理软件可以把许可资源纳入统一管理,实时监控当前占用,并用历史分析看某段时间里是谁、以什么方式使用。把批处理任务的启动记录与许可使用曲线对上,才能分清是任务真的多,还是交互会话结束后没有归还。无人操作、没有界面,都不能单独当作闲置依据。

真正可优化的,是已确认结束、使用者也不再需要的占用;优化应建立在记录上,而不是“看起来没人用”的判断上。

广州浮点信息科技有限公司通过浮点许可优化管理软件,帮助客户掌握浮动版软件的使用数据,提升许可证使用效率,助力企业降本增效。如有NX/UG许可证管理与优化方面的需求,欢迎联系我们。

联系我们

微信二维码

微信二维码

zhao.pf@floatlic.com
16676667667