当前位置:首页>python>《HM Python 进化论Vol.2》代码报错“未定义”?因为你还没搞懂 HyperMesh 的“世界观”

《HM Python 进化论Vol.2》代码报错“未定义”?因为你还没搞懂 HyperMesh 的“世界观”

  • 2026-09-11 22:14:14
《HM Python 进化论Vol.2》代码报错“未定义”?因为你还没搞懂 HyperMesh 的“世界观”

上一期我们打开了 Python Window,但当你兴冲冲地想要输入命令时,可能会发现无从下手。为什么 HyperMesh 2026 里会有 hw 和 hm 两个包?为什么所有的操作都要挂在一个 model 变量后面?这背后是 HyperMesh 从“单模型”向“多模型”架构的彻底转型。今天用“公寓大楼”和“钥匙”的图解,带你彻底理清 Session 与 Model 的从属关系,让你的代码不再迷路。

1. 观念冲击:从“独门独户”到“公寓大楼”

在 Tcl 时代(或者旧版 HyperMesh),软件打开就是一个空旷的房间,你所有的命令(比如创建节点)都默认在这个房间里执行。这叫 单模型架构。

到了 HyperMesh 2026,软件变成了一栋 “公寓大楼”。

  • 你可以同时打开多个模型(Model A, Model B, Model C)。

  • 它们并排显示在屏幕上,互不干扰。

这就带来了一个问题:当你下令“删除所有节点”时,系统怎么知道你要删哪个模型里的节点?

2. 架构分层:hw 与 hm 的职能划分

为了管理这栋大楼,Python API 设计了两层管理机制。请看下面的层级图,这是你必须印在脑子里的地图:

  • 大楼管理员 (hw.Session):

    • 级别:软件级 (Application Level)。

    • 管辖范围:管理整个窗口、页面布局、以及“当前有哪些模型开着”。它不关心具体的网格和几何。

    • 代码位置:import hw

  • 户主 (hm.Model):

    • 级别:模型级 (Model Level)。

    • 管辖范围:管理具体的节点、单元、材料、载荷。99% 的日常工作都在这里。

    • 代码位置:import hm

3. 核心代码:拿到你的“钥匙”

这就是为什么你不能直接写命令的原因-一你得先指定“房间”。在 Python API中,实例化 Model对象 就是拿钥匙的过程。

请看标准起手式:

Python    代码示例

import hm

# 1.拿到当前激活模型的“钥匙”
#如果你不传参数,它默认指向当前屏幕上亮着的那个模型

my model = hm.Model()

# 2. 所有的操作,都要通过这把钥匙(对象)来执行
# 错误写法:CreateNode(...) -> 系统一脸懵逼:哪家的节点?
# 正确写法:my_model.CreateNode(...) -> 哦,是 my_model 家的。

print(f"当前模型名称: {my_model.name}")

4.实战演示:两个世界的碰撞

让我们来看看如果不这样做会发生什么。

  • ❌ 错误示范 (Tcl 思维):试图直接调用函数,Python 会报错,因为它不知道上下文。

    Python    代码示例

    import hm
    # 报错!delete 并没有定义在顶层,它属于 Model 类的方法
    hm.delete(entity)

  • ✅ 正确示范 (面向对象思维):先实例化,再调用方法。

    Python    代码示例

    import hm
    import hm.entities as ent

    # 实例化
    t1 = hm.Model()

    #使用 t1 这个对象去调用方法
    #只有这样,Python 才知道你是要在t1这个模型里删东西
    prop=ent.Property(t1,100) #获取ID为100的属性
    t1.delete(prop) #清除它

结语

HyperMesh 2026 的 Python API 之所以看起来“啰嗦”(总是要写 model.),是因为它赋予了你 同时操控多个模型 的能力。记住一句话:先 import hm,再 model = hm.Model()。 这行代码是开启所有自动化脚本的万能钥匙。


👉 下期预告:

好了,钥匙拿到了,房间也进去了。现在我想做最简单的事:选中所有的单元,或者选中所有材料为 Steel 的部件。Tcl 里的 *createmark 让我爱恨交加,Python 里对应的 hm.Collection 到底长什么样?下一期,我们将解锁 HyperMesh Python 最强大的功能——集合 (Collection),彻底告别“选不中”的烦恼。

公众号

知识星球

扫码关注

科趣范,让科研更简单

小红书

抖音

最新文章

随机文章