在HyperWorks的Tcl二次开发中,开发者经常需要重复编写大量API调用代码来执行常见操作。HyperWorks Automation Toolkit(HWAT)是一个函数和部件集 合,旨在让应用程序能够以最小工作量和最大可移植性快速组装HyperWorks自动化流程。HWAT为HyperWorks Tcl脚本API提供了一致的高层编程接口,将需要反复执行的API调用捆绑为单一操作,加速开发并简化调试。
使用HWAT编写的代码可以跨各种HyperWorks应用程序(HyperMesh与fepre client)和版本(v6.0与v6.1)移植。HWAT提供三个基本特性:
HWAT作为未来核心功能的"预发布平台"。它提供了快速实现和部署所需功能的机会,并通过调试和文档化算法为迁移到核心做好准备。当函数从HWAT迁移到HW核心时,最终用户无需修改代码即可继续使用,唯一可察觉的变化是某些操作迁移到核心后会响应更快。
HWAT为使用它的应用程序提供对核心API变更的屏蔽,并为核心中的已知问题提供内置变通方案。当核心发生变化时,HWAT会更新以反映这些变化,但HWAT用户无需更改任何应用程序代码即可享受修改的好处。在应用程序中修改数百个createmark调用可能令人生畏,通过HWAT调用,替换只需在一处进行,终端用户无需采取任何特殊操作。
某些操作没有充分理由直接在核心中实现代码。这类算法可能经常变化(例如车辆碰撞测试程序),基于软件发布周期跟进可能困难或不切实际。这些内容被放入HWAT作为函数集 合,并保持与标准的同步。此外,HWAT还提供核心中通常没有的部件和应用工具——例如AppHost工具允许用户开发既可作为Process Manager工作流中的任务使用、也可作为独立宏部署的代码,以最小额外工作量实现最大用例覆盖。
HWAT函数按功能分为六大类,共计 179 个函数,覆盖文件I/O、数学运算、求解器交互、实体管理、XML解析和核心算法:
位于 ::hwat::io:: 命名空间下,共 12 个函数,负责文件读写、模型导入、MWF文件处理和URL文件访问等I/O操作。
位于 ::hwat::math:: 命名空间下,共 16 个函数,提供向量运算(叉积、点积、归一化、平均值)、矩阵检查与变换、角度单位转换等数学工具。
位于 ::hwat::solver:: 命名空间下,共 14 个函数,用于创建刚性墙(有限/无限/刚性柱)、加速度计、施加速度等求解器相关实体。
位于 ::hwat::utils:: 命名空间下,共 113 个函数,是HWAT中数量最多的一类。涵盖实体创建/删除/查询、边界框计算、坐标系操作、变换操作、显示控制、假人定位、障碍物导入、消息调试、文件与求解器、穿透检查等全方位功能。以下按功能分组列举:
实体创建与管理
实体查询与信息获取
几何与单元操作
边界框计算
坐标系操作
变换操作
显示与视图控制
假人定位
障碍物导入与定位
截面切割
消息与调试
文件与求解器
穿透检查
质量与几何信息
标签与标题管理
位于 ::hwat::xml:: 命名空间下,共 15 个函数,使用基于SAX的解析器处理XML数据。提供属性查询、回调注册和解析器调用等功能,其中以 private:: 为前缀的为内部私有函数。
位于 ::hwat::core:: 命名空间下,共 9 个函数。这些主要是私有函数,大多数情况下不直接调用,而是作为辅助函数被其他函数内部调用。主要涉及假人对齐、障碍物计算和截面切割等核心算法。
HWAT遵循严格的编码规范,确保代码一致性和可维护性。核心规范包括:
1.
2.
3.
4.
5.
部件变量同样有前缀规范:button→btn_、combobox→cmb_、entry→ent_、label→lbl_、frame→frm_ 等。
所有HWAT函数必须包含标准化的函数头,包含:过程名称、描述、参数(每行一个)、返回值、注释、作者(最后修改者排第一位)、最后更新日期。对于修改,直接覆盖头部信息而非追加。函数头还包含UAT(用户验收测试)部分,记录测试步骤和成功/失败判定标准。
HWAT使用 ::hwat:: 命名空间,函数通过 ::hwat::utils:: 和 ::hwat::globals:: 等子命名空间组织。命名空间内函数定义采用风格A(在命名空间外定义proc)而非风格B(在命名空间eval块内定义proc)。
错误处理通过三个标准函数实现:WriteErrorMessage 用于向消息框发布错误消息;WriteDebugMessage 在 hwat::globals::DEBUG 变量设为1时发布调试消息(通过 SetDebugOnOff 控制);PostToMessageBox 在应用程序中向消息框发布消息,或在HyperMesh中以Tk消息框发布。
HWAT价值总结:HWAT是HyperWorks二次开发的"加速器"——它将常用的API调用模式封装为高层函数,屏蔽了核心API变更的影响,并提供了AppHost等核心中不具备的工具。对于从事HyperWorks自动化的工程师来说,掌握HWAT意味着用更少的代码做更多的事,同时获得跨版本、跨应用的可移植性。建议在开始任何HyperWorks Tcl自动化项目前,先浏览HWAT函数库,避免重复造轮子。
—— HyperWorks 2026 工具系列 · 完 ——
本系列从第45篇到第49篇,系统介绍了HyperWorks的五款实用工具:HgTrans(结果文件转ABF)、HvTrans(结果文件转H3D)、HWTK(GUI开发工具包)、Cleanup Utility(设置清理)和HWAT(自动化工具包)。这些工具虽然不像HyperMesh、HyperView那样处于CAE工作流的核心位置,但在数据转换、界面开发、故障排查和自动化流程中发挥着不可替代的作用。掌握这些工具,将使你的HyperWorks使用体验更加顺畅高效。