利用Python脚本实现向HFSS批量导入变量

ANSYS HFSS 可以批量导出工程 (Project) 其中一个设计 (Design) 中的所有变量,但是却缺乏批量导入变量的功能,这一点逊色于 CST,但是,我们可以利用 HFSS 的脚本功能来二次开发,实现向 HFSS 批量导入变量。

本文介绍实现的方法。大家可下载文中的脚本文件来使用。

1. HFSS 批量导出变量

HFSS 本身便支持变量导出。举个例子,打开一个名为「model」的HFSS 工程,工程下有一个名为「input」的设计,在这个设计中我制作了一个矩形波导转悬置微带线的模型。这个模型的所有变量都显示在左侧的 「Properties」栏里。

把鼠标放在上面然后点击右键,然后左键选择弹出的「Copy to Clipboard」命令,即可将所有变量复制到粘贴板中。

001

或者,我们可以选择上方菜单栏中的「HFSS > Design Properties…」,在弹出的变量列表中,同样把鼠标放在上面然后点击右键,然后左键选择弹出的「Copy to Clipboard」命令,将所有变量复制到粘贴板中。

002

003

然后我们在一个空白的表格文件中,ctrl+v 粘贴,即可将「input」设计中的所有变量导出到表格文件中了。

004

2. HFSS 批量导入变量

我们使用 ANSYS HFSS 建模和仿真,通常是图形化界面上用鼠标点击来操作。其实 ANSYS 支持 Visual Basic 脚本,在18.0版本后更支持 Python 脚本,用户在图形化界面上的每一个操作都可以通过运行对应的脚本指令来实现。通过编写并运行脚本指令,就可以完成一些重复的人工操作。

因此,我们可以利用 HFSS 的脚本功能来实现变量的批量导入,思路是:

  1. 使用脚本录制功能,获得「在 HFSS 中新建一个变量」的操作所对应的脚本指令。
  2. 编写脚本,实现「在 HFSS 中新建多个变量」的操作。
  3. 在 HFSS 中运行脚本,即可实现变量的批量导入。

本文用的是 Python 脚本。

2.1 录制脚本

我们仍以矩形波导转悬置微带线的 HFSS 工程为例,录制脚本,来看看「在 HFSS 中新建一个变量」所对应的脚本指令是怎么样的。

启动 ANSYS,但先不打开工程。

选择上方菜单栏中的「Tools > Record Script To File…」,在弹出的「另存为」窗口中,选择脚本文件的保存目录、名称,选择「*.py」的脚本格式,保存。现在我们在 HFSS 中的每一步操作都会被记录到所保存的这个 Python 脚本文件中。

005

006

点击「Open」,打开「model」工程。

在「model」工程的「input」设计里,选择上方菜单栏中的「HFSS > Design Properties…」,在弹出的变量列表中,点击「Add…」来新增一个变量。在弹出的窗口中设置:

  • 变量名称为「myVar」
  • 变量类型为「length」
  • 单位为「mm」
  • 数值为「0.1」

确认,保存工程。

007

现在选择「Tools > Stop Script Recording」,结束脚本录制。现在可以去查看所录制的脚本了。

008

2.2 编写脚本

在刚才保存的目录中打开「addVariables.py」脚本,查看代码。

这就是刚才的操作,即「在 ANSYS 中打开一个 HFSS 工程,并在其中一个设计里添加一个变量」所对应的代码了:

# ----------------------------------------------
# Script Recorded by ANSYS Electronics Desktop Version 2018.2.0
# 18:47:49  4月 09, 2022
# ----------------------------------------------
import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oDesktop.OpenProject("D:/files/Desktop/model.aedt")
oProject = oDesktop.SetActiveProject("model")
oDesign = oProject.SetActiveDesign("input")
oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:myVar",
					"PropType:="		, "VariableProp",
					"UserDef:="		, True,
					"Value:="		, "0.1mm"
				]
			]
		]
	])
oProject.Save()

我们来解读代码。

这是一些初始化操作,无需理会或改动:

import ScriptEnv
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()

这三句代码对应我们打开「model.aedt」工程文件、激活「model」工程、激活「input」设计的操作:

oDesktop.OpenProject("D:/files/Desktop/model.aedt")
oProject = oDesktop.SetActiveProject("model")
oDesign = oProject.SetActiveDesign("input")

这些代码就对应我们添加变量的操作,其中 ”NAME:myVar“ 和 ”0.1mm“ 对应变量的名称、数值和单位:

oDesign.ChangeProperty(
	[
		"NAME:AllTabs",
		[
			"NAME:LocalVariableTab",
			[
				"NAME:PropServers", 
				"LocalVariables"
			],
			[
				"NAME:NewProps",
				[
					"NAME:myVar",
					"PropType:=","VariableProp",
					"UserDef:=",True,
					"Value:=","0.1mm"
				]
			]
		]
	])

那么,我们在脚本代码中设置 for 循环,在循环中赋予变量名称和数值等,就可以实现向 HFSS 工程添加多个变量了。

据此,我编写了**「向 HFSS 工程批量导入变量」**的脚本:

# ----------------------------------------------
# Script author:Nan_beta.  
# 2022-04-09
# ----------------------------------------------

import ScriptEnv
import csv

# set paths and names
variables_path  = "D:/myVariables.csv"
project_path    = "D:/model.aedt"
project_name    = "model"
design_name     = "input"

# read variables list
variables_data = open(variables_path)
variables_csvreader = csv.reader(variables_data)
variables_list = list(variables_csvreader)

# initialize
ScriptEnv.Initialize("Ansoft.ElectronicsDesktop")
oDesktop.RestoreWindow()
oDesktop.OpenProject(project_path)
oProject = oDesktop.SetActiveProject(project_name)
oDesign = oProject.SetActiveDesign(design_name)

# add variables
for i in range(1,len(variables_list)):
	name = variables_list[i][0]
	value= variables_list[i][1]
	unit = variables_list[i][2]
	oDesign.ChangeProperty(
		[
			"NAME:AllTabs",
			[
				"NAME:LocalVariableTab",
				[
					"NAME:PropServers", 
					"LocalVariables"
				],
				[
					"NAME:NewProps",
					[
						"NAME:"+name,
						"PropType:=","VariableProp",
						"UserDef:=",True,
						"Value:=",value+unit
					]
				]
			]
		])

# save project
oProject.Save()

我将想要导入到 HFSS 工程的变量保存在 csv 文件里,脚本会读取 csv 文件中的变量名称、数值和单位,然后以添加新变量的方式,在一个 for 循环中逐一将变量添加到指定的 HFSS 工程的指定设计中。

使用此脚本时,需要在开头「# set paths and names」注释下的代码中设置保存变量信息的 csv 文件的路径、HFSS 工程文件的路径、工程名称和设计名称。其他代码无需改动。

2.3 使用脚本

现在来演示脚本的使用方法。

step1:获取 Python 脚本文件和 csv 文件。

此脚本需要配合一个 csv 文件使用。文末会提供 Python 脚本文件和 csv 文件的下载方式。

step2:编辑 csv 文件和 Python 脚本文件

将准备导入到 HFSS 工程的变量输入到 csv 文件中,变量的名称、数值和单位逐行输入。

注意:每一列的列头「Name」、「Value」和「Unit」不要删除。

009

用 vs code等编辑器或者记事本即可打开 Python 脚本文件。留意,脚本是由 ANSYS 来运行的,因此本计算机上并不需要配置 Python 运行环境,我们只需要打开脚本文件来稍作修改而已。

在脚本中设置 csv 文件的路径、准备导入变量的HFSS 工程文件的路径、工程名称和设计名称,脚本的其他代码无需改动。

# set paths and names
variables_path  = "D:/myVariables.csv"
project_path    = "D:/model.aedt"
project_name    = "model"
design_name     = "input"

010

step3:在 ANSYS 中运行脚本

打开 ANSYS,无需打开 HFSS 工程文件,点击「Tools > Run Script…」。

011

在弹出的文件选择窗口中找到并选中脚本文件,点击确认,即可让 ANSYS 运行该脚本。

012

脚本运行完毕后,查看 「model」工程下的「input」设计的变量,可以看到,我们的8个变量已经顺利添加到设计中了。

013

如此,我们就实现了向 HFSS 工程批量导入变量啦。

关注微信公众号「南贝塔」,后台回复「0010」获取向 HFSS 批量导入变量的 Python 脚本文件和 csv 文件。

谢谢观看。

  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值