本文为博主进行Maxwell自动化研究过程的学习记录,同时对Maxwell自动化脚本(pythonIron)实现方法进行分享。
文章目录
脚本使用方法
- 创建一个pyhon文件,如”script.py“
- 点击Maxwell➡Tools➡run script
- 选择刚刚创建的脚本打开,即可运行*(注意去除脚本中中文内容)*
脚本录制与查看
如图点击录制脚本
点击选择ironPython
录制后可以在同样位置选择结束录制
但是博主的版本有bug,这一块是灰色的。那也没有关系,脚本是实时更新并保存在临时目录的。
即便版本正常,博主还是建议直接取临时文件夹实时查看脚本录制内容,这样每进行一步操作即可知道对应的脚本代码。临时目录的位置通常是:c盘用户文件夹/AppData/Local/Temp。具体可以在maxwell软件设置内查看:
点击后出现设置窗口,找到Temp对应位置:
之后在文件管理器打开这个位置,可以看到最近录制的脚本,使用编辑器或记事本打开,即可看到对应操作的代码
常用脚本代码
如果你懒得进行录制,或对录制脚本做出一些简单更改与补充,可以参考下面的一些常见代码
通用开头
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
定义项目
oProject = oDesktop.SetActiveProject("MaxwellProject")
oDesign = oProject.SetActiveDesign("Maxwell2DDesign1")
此段分别定义了maxwell的项目、设计,此处名称应对应maxwell项目目中的对应名称:
调整设计变量
软件内对应位置
通常批量化、自动化操作需要对项目的设计变量进行设置,Maxwell中对应位置为
点击后即可看到变量设置窗口
脚本
使用python脚本对变量进行设置:
oDesign.ChangeProperty(
[
"NAME:AllTabs",
[
"NAME:LocalVariableTab",
[
"NAME:PropServers",
"LocalVariables"
],
[
"NAME:ChangedProps",
[
"NAME:currents1", #变量名
"Value:=" , str(s)+"A" #变量值(若有单位则加上单位)
]
]
]
])
设置求解器
软件内对应位置
点击后出现求解器设置窗口,此处为稳态求解类型,若为频域或瞬态可能有差异
脚本
设置方法如下,根据需要设置的字段按照如下方式设置
oModule.EditSetup("Setup1",
[
"NAME:Setup1",
"Enabled:=" , True,
[
"NAME:MeshLink",
"ImportMesh:=" , False
],
"MaximumPasses:=" , 10,
"MinimumPasses:=" , 2,
"MinimumConvergedPasses:=", 1,
"PercentRefinement:=" , 30,
"SolveFieldOnly:=" , True,
"PercentError:=" , 1,
"SolveMatrixAtLast:=" , True,
"UseNonLinearIterNum:=" , False,
"NonLinearResidual:=" , 0.001,
"SmoothBHCurve:=" , False,
[
"NAME:MuOption",
"MuNonLinearBH:=" , True
]
])
定义数据模块
通常自动化脚本用于数据的导出。故使用模块“FieldsReporter”
oModule = oDesign.GetModule("FieldsReporter")
使用“计算器”计算并导出数据
软件对应计算器位置
点击后打开计算器窗口
关于计算器的使用方法本文不过多介绍,具体使用可参考其他网络教程。
脚本实现
由于计算器的操作类型很多,下面列举几个操作的脚本例子,可根据代码形式类推:
- 输入求解值,此处向计算器输入了磁场B的求解结果
oModule.EnterQty("B")
- 对当前计算器内容施加操作,此处操作取出向量第一个分量
oModule.CalcOp("ScalarX")
- 施加求解区域,此处选择几何 0_1
oModule.EnterVol("0_1")
- 输入常数,此处输入2
oModule.EnterScalar(2)
- 施加运算,此处施加除法运算
oModule.CalcOp("/")
- 导出结果至文件 ,此处定义setup求解结果项“LastAdaptive”,和设计变量currents1 为100A
oModule.CalculatorWrite("E:\\maxwellData\\1.fld",
[
"Solution:=" , "Setup1 : LastAdaptive"
], ["currents1:=" , "100A"])
- 清除计算器中内容
oModule.CalcStack("clear")
项目保存
oProject.Save()
关闭脚本
ScriptEnv.Shutdown()