当前位置:首页>python>《HM Python 进化论Vol.4》拒绝“查字典”!像改 Excel 一样修改模型参数

《HM Python 进化论Vol.4》拒绝“查字典”!像改 Excel 一样修改模型参数

  • 2026-09-28 13:19:38
《HM Python 进化论Vol.4》拒绝“查字典”!像改 Excel 一样修改模型参数

前几期我们拿到了“钥匙”(Model),也学会了用“购物车”(Collection)选中对象。现在,假设你要把 100 个材料的密度改成 7.85,或者把所有焊点的类型改成 ACM。在 Tcl 里,这需要你精通 *setvalue 命令并熟记各种生僻的 Data Name。但在 HyperMesh 2026 的 Python API 中,实体“活”了过来。修改属性就像给变量赋值一样简单——IDE 甚至会通过下拉菜单告诉你有哪些属性可改。

1. 痛点:被 *setvalue 支配的恐惧

老手们都懂,用 Tcl 修改一个属性是多么痛苦:

  1. 先去 Help 文档查这个实体的 Data Name(比如杨氏模量是 E 还是 YoungsModulus?)。

  2. 拼凑出像 *setvalue mats id=1 STATUS=2 100.0 这样晦涩的句子。

  3. 一旦拼错一个字母,整个脚本报错。

Python 的革命性变化:实体(Entity)不再是一个冷冰冰的 ID 数字,它是一个对象。对象自带属性(Attributes),你只需要用 “点” 就能点出来。

2. 核心操作:读写属性 (Get & Set)

让我们试着修改一个材料的参数。

Python    代码示例

import hm
import hm.entities as ent

# 1. 获取一个现有的材料对象 (假设 ID 为 1)
my_mat = ent.Material(hm.Model(), 1)

# 2. 【读】获取当前属性
print(f"当前密度: {my_mat.Rho}")
print(f"当前名称: {my_mat.name}")

# 3. 【写】直接赋值修改
my_mat.Rho = 7.85e-9  # 修改密度
my_mat.name = "Steel_S355  # 修改名称
my_mat.color = 12  # 修改颜色为红色

# 不需要任何 *update 命令,修改即时生效!

3. 批量修改:配合 Collection 的威力

还记得上一期的 Collection 吗?现在我们把它们结合起来。场景:把所有名字里带 "Rubber" 的材料,杨氏模量统一改为 500。

Python    代码示例

model = hm.Model()

# 1.筛选出目标材料
rubbers = hm.Collection(
   model,
   hm.FilterByAttribute(
      ent.Material,
      "name *='Rubber'"
   )
)

# 2. 循环修改
for mat in rubbers:
   # 甚至可以加个判断逻辑
   if mat.E > 1000:
      mat.E = 500
      print(f"已修正材料: {mat.name}")

4.动词操作:不仅仅是改属性

除了修改属性(名词),我们经常还需要对实体做动作(动词),比如删除、重命名、移动。这些操作通常封装在 Model 类 的方法中。

  • 删除 (Delete)

    Python    代码示例

    # 删除上面选中的所有橡胶材料
    model.delete(rubbers)

  • 模型清理 (Clean)在 Tcl 中我们常用 *nodecleartemp。Python 中也有对应的方法,通常命名更加规范。

结语

Python API 的最大魅力之一,就是把“数据”变成了“对象”。你不再需要去背诵那些晦涩的 Data Name,利用 IDE 的自动补全(IntelliSense),你可以像浏览菜单一样探索一个实体到底有哪些属性可以修改。这极大地降低了编写脚本的记忆负担。


👉 下期预告:

“道理我都懂,但有些复杂操作(比如网格切分、几何抽取)我实在猜不到 Python 函数名叫什么,怎么办?”难道还要去查那本 2000 页的帮助文档吗?不!下一期我们将介绍 HyperMesh 2026 的“影分身”功能 —— 录制器 (Recording)。教你如何把鼠标操作直接变成 Python 代码,彻底解放双手!

公众号

知识星球

扫码关注

科趣范,让科研更简单

小红书

抖音

最新文章

随机文章