有限元多工况力载荷怎么批量导入?用 Python 创建 ANSYS Mechanical Force 并记录日志

需求描述:力载荷一多,创建和记录都容易乱
大家好,我是小郭老师,中科院硕士,长期从事 ANSYS 二次开发与仿真流程自动化,曾帮助多个研究所、研究院、国企和大型企业完成 ANSYS 二次开发项目。
在 Mechanical 的有限元数值计算场景中,多载荷建模同时涉及载荷对象、作用域和时程数据,三者需要保持清晰的映射关系。
当模型中存在多测点或多工况时,每个 Force 都需要回查到来源 CSV、目标 Named Selection 和创建状态。
工程模型里如果有几十个时程力载荷,手工创建 Force 对象会非常容易出错:文件名和载荷名对不上,Fx、Fy、Fz 列读取错,某个载荷到底绑定到哪个 Named Selection 也没有记录。后面复核时,只看 Mechanical 树,很难知道每个 Force 来自哪个 CSV。
本文用 Python 批量读取 CSV 文件,创建 Force 对象,并同步输出创建日志。日志保存文件名、Force 名称、Named Selection、处理状态和错误信息,方便沿着文件映射关系复核模型。
脚本实现思路
脚本先从指定文件夹读取多个 CSV 文件,识别 Time、Fx、Fy、Fz 列;随后每个文件对应创建一个 Force 对象,并把文件名、载荷名、Named Selection、创建状态和错误信息写入日志。
它适合载荷文件格式和作用域规则相对统一的项目。当前脚本把所有 Force 绑定到同一个 Named Selection,接入具体模型前要先确认 ns_force 的名称和作用域是否符合项目规则。
脚本会修改当前模型,运行前先保存工程。列名通过关键字匹配,作用域由 ns_force 固定指定;接入正式批处理前,先用少量 CSV 检查列名、单位、载荷方向和对象绑定。
整体执行过程可以理解为下面几步:

第一步,脚本设置 CSV 输入文件夹、创建日志路径、目标 Named Selection、时间单位和力单位。
第二步,脚本逐个读取 CSV 文件,并按关键字识别 Time、Fx、Fy、Fz 列。
第三步,脚本查找目标 Named Selection,并取得当前分析对象作为 Force 创建入口。
第四步,脚本为每个 CSV 创建一个 Force 对象,将载荷定义为三方向分量,并写入 X/Y/Z 随时间变化的离散值。
第五步,脚本把文件名、Force 名称、Named Selection、处理状态和错误信息写入 force_creation_log.csv。
源码及其讲解

关键逻辑如下:
ns_location = DataModel.GetObjectsByName(ns_location_name)[0]analysis = DataModel.AnalysisList[0]bc_f = analysis.AddForce()bc_f.DefineBy = LoadDefineBy.Components
脚本先读取 CSV,把每一列按表头放进字典,再用关键字查找 Time、Fx、Fy、Fz。找到目标 Named Selection 后,通过 DataModel.AnalysisList[0] 取得分析对象,并调用 analysis.AddForce() 创建 Force。随后把 DefineBy 设置为 Components,把同一组时间序列分别写入 X、Y、Z 三个分量。
每处理一个 CSV,脚本都会在日志中写入文件名、Force 名称、Named Selection 和状态。这样即使某个文件缺列、Named Selection 不存在,或者创建过程报错,也能在日志里看到问题,避免只在 Mechanical 树里留下难以追溯的半成品。
脚本运行结果
当目标 Named Selection 存在、CSV 列名可识别且模型可编辑时,运行后会看到:
- • Mechanical 树中新增若干 Force 对象。
- •
force_creation_log.csv:记录每个 CSV 对应的 Force 名称、作用域名称、创建状态和错误信息。
脚本扩展方向
- 1. 可以把 CSV 文件名和 Named Selection 建立映射表,不再让所有 Force 使用同一个作用域。
- 2. 可以先接入 CSV 格式校验,只处理通过检查的文件。
- 3. 可以为创建的 Force 加入统一前缀,区分自动创建和手工创建对象。
- 4. 可以把创建日志和报告复核清单合并,形成载荷导入记录。
涉及具体模型时,先核对作用域、单位、载荷方向、边界条件和公司模板,再用小批量结果检查日志与对象树。
总结
批量 Force 创建中有两个问题最值得优先处理:减少重复操作,留下可复核日志。
Python 可以按 CSV 创建 Force 并记录映射关系;作用域规则、单位设定和载荷物理含义,则通过模型属性和日志共同复核。
如果你要批量创建几十个 Force,最担心哪一步出错:文件和载荷名对应、Named Selection 作用域、XYZ 分量,还是时间单位?欢迎留言,我可以继续按具体模型拆解。