n5321 | 2025年10月26日 11:00

Tags: AutoEM


python通过com32 来更改ansys 参数的logic 跟matlab 确实不同!

一个简单的事情,居然还花了几个小时的时间!

背景:

1. matlab基本上copy record vbscript 就可以了!但是python 用的是不一样的logic!
通过com32, 他是直接插入到Ansys对象里面去的!一个com又已经被封装了!  我熟悉的是actxserver下面对ansys 的manipulate!

2. Ansys Maxwell下面的数据结构对于不同的参数来说,是不一样的!所以他需要设计不同的控制结构!开始考虑是做成一个数组结构,然后添加索引,match 到了以后直接调用。

问题是中间debug的过程比较麻烦!因为封装了,所以有点难把问题点拎出来!

logic! 暂时用的这个code 实现!

def set_properties(self, prop_changes):
"""Applies a list of property changes to the active design or editor."""
for prop_change in prop_changes:
changed_props = ["NAME:" + prop_change['name']]
print('更改的参数', changed_props)

if prop_change['name'] == 'Wire Size':
# Wire Size 复合属性
changed_props += [
"WireSizeWireDiameter:=", prop_change['value'],
"WireSizeGauge:=", "0",
"WireSizeWireWidth:=", "0mm",
"WireSizeWireThickness:=", "0mm",
"WireSizeMixedWireRectType:=", False,
["NAME:WireSizeMixedDiameter"],
["NAME:WireSizeMixedWidth"],
["NAME:WireSizeMixedThickness"],
["NAME:WireSizeMixedThicknessMixedFillet"],
["NAME:WireSizeMixedThicknessMixedNumber"]
]
print('wiresize data is', changed_props)

# 不同类型的参数修改方式
if 'type' in prop_change:
if prop_change['type'] == 'Value':
changed_props += ["Value:=", prop_change['value']]
elif prop_change['type'] == 'Material':
changed_props += ["Material:=", prop_change['value']]
elif prop_change['type'] == 'MustBeInt':
changed_props += [
"MustBeInt:=", prop_change.get('must_be_int', False),
"Value:=", prop_change['value']
]
else:
# 默认只写 Value
changed_props += ["Value:=", prop_change['value']]

# 选择目标对象
if prop_change['target'] == 'Editor':
self.Editor.ChangeProperty([
"NAME:AllTabs",
[
f"NAME:{prop_change['tab']}",
["NAME:PropServers", prop_change['prop_server']],
["NAME:ChangedProps", changed_props]
]
])
elif prop_change['target'] == 'Design':
self.Design.ChangeProperty([
"NAME:AllTabs",
[
f"NAME:{prop_change['tab']}",
["NAME:PropServers", prop_change['prop_server']],
["NAME:ChangedProps", [
"NAME:" + prop_change['name'],
"Value:=", prop_change['value']
]]
]
])

几个点记录一下!

1, 考虑更改的参数,暂时用的prop_changes来统一。里面去changed_props来做微调。

最后通过self.editer or self.design来更改。

2, 更改的参数点,需要把所以的参数都记录进来!


更改文档
maxwell_automation.py

ai_search_page.py