上一期我们打开了 Python Window,但当你兴冲冲地想要输入命令时,可能会发现无从下手。为什么 HyperMesh 2026 里会有 hw 和 hm 两个包?为什么所有的操作都要挂在一个 model 变量后面?这背后是 HyperMesh 从“单模型”向“多模型”架构的彻底转型。今天用“公寓大楼”和“钥匙”的图解,带你彻底理清 Session 与 Model 的从属关系,让你的代码不再迷路。
在 Tcl 时代(或者旧版 HyperMesh),软件打开就是一个空旷的房间,你所有的命令(比如创建节点)都默认在这个房间里执行。这叫 单模型架构。
到了 HyperMesh 2026,软件变成了一栋 “公寓大楼”。
这就带来了一个问题:当你下令“删除所有节点”时,系统怎么知道你要删哪个模型里的节点?
为了管理这栋大楼,Python API 设计了两层管理机制。请看下面的层级图,这是你必须印在脑子里的地图:
大楼管理员 (hw.Session):
户主 (hm.Model):
这就是为什么你不能直接写命令的原因-一你得先指定“房间”。在 Python API中,实例化 Model对象 就是拿钥匙的过程。
请看标准起手式:
import hm
# 1.拿到当前激活模型的“钥匙”
#如果你不传参数,它默认指向当前屏幕上亮着的那个模型
my model = hm.Model()
# 2. 所有的操作,都要通过这把钥匙(对象)来执行
# 错误写法:CreateNode(...) -> 系统一脸懵逼:哪家的节点?
# 正确写法:my_model.CreateNode(...) -> 哦,是 my_model 家的。
print(f"当前模型名称: {my_model.name}")
让我们来看看如果不这样做会发生什么。
❌ 错误示范 (Tcl 思维):试图直接调用函数,Python 会报错,因为它不知道上下文。
import hm
# 报错!delete 并没有定义在顶层,它属于 Model 类的方法
hm.delete(entity)
✅ 正确示范 (面向对象思维):先实例化,再调用方法。
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),彻底告别“选不中”的烦恼。