zl程序教程

您现在的位置是:首页 >  后端

当前栏目

vbs脚本一键导入导出HFSS的Local Variables

导入导出 脚本 一键 local variables vbs
2023-09-11 14:15:47 时间

学个Antenna是以天线仿真和调试为主,理论原理为辅的干货天线技术专栏,包括天线入门知识以及各类天线的原理简介、仿真软件建模、设计、调试过程及思路。如有想看到的内容或技术问题,可以在文尾写下留言。

摘要:

CST支持Parameters的导入导出,这在调试参量的过程中极为方便。不过HFSS中没有Local Variables的导入导出功能咋办呢?本次推文来教你用vbs脚本实现,最后还有一个彩蛋(低版本HFSS打开高版本的文件),精彩不要错过!

CST参量导入/导出

在人工优化结构参量时,导出调试过程中较优结果对应的参量和写材料时及时Ctrl+S一样重要。毕竟万一调过头,正好赶上软件抽风导致数据崩了,又得进入新一轮苦逼的调参。在CST软件中,我们可以在Parameter List区域点击鼠标右键,通过SaveParameters to File和Load Parameters to File实现参量的导出和导入,以备不时之需。

HFSS参量导入/导出

CST中自带了参量的导入导出功能,那么HFSS有么?我们打开HFSS的Design Properties,在Local Variables区域右键。嗯,找到了参量数据复制功能!

复制粘贴到记事本,参量名称、数据值和单位确实都能保存出来,但是如何像CST那样再导入外部的参量进行数据值的更新呢?

这里提供了vbs脚本的方法——基于HFSS自带的HFSS Scripting。

导出参量主要使用到GetVariables()这个函数,通过oDesign.GetVariables()读取当前激活的设计文件下的所有Local Variables,然后分别获取所有变量的数目,变量名和变量值,最后每行数据按变量名分割符变量值的顺序依次写入到目标路径下的txt文件中,整段代码如下(文末二维码附有下载链接):

' ----------------------------------------------

' ExportVariables,适用于ANSYS ElectronicsDesktop Version(2017, 2)及以上

' ----------------------------------------------

Dim oAnsoftApp

Dim oDesktop

Dim oProject

Dim oDesign

Dim oEditor

Dim oModule

Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")

Set oDesktop = oAnsoftApp.GetAppDesktop()

oDesktop.RestoreWindow

Set oProject = oDesktop.GetActiveProject()

Set oDesign = oProject.GetActiveDesign()

FileDir="C:\Users\Administrator\Desktop\VBS\test.txt"

local_var_array=oDesign.GetVariables()

Number=Ubound(local_var_array)

Set Object = CreateObject("Scripting.FileSystemObject")

Set fid=Object.CreateTextFile(FileDir,True)

for Count=0 To Number

str1=local_var_array(count) & "=" & Cstr(oDesign.GetVariableValue(local_var_array(count)))

oDesktop.AddMessage oProject.GetName(), oDesign.GetName(), 0, str1

fid.WriteLine(str1)

Next

oDesktop.AddMessage oProject.GetName(), oDesign.GetName(), 0, "----------------------------------------------------------"

oDesktop.AddMessage oProject.GetName(), oDesign.GetName(), 0, FileDir

oDesktop.AddMessage oProject.GetName(), oDesign.GetName(), 0, "Export variables complete!"

​更新参量主要使用到SetVariableValue()这个函数,通过vbs脚本读取目标路径下的txt文件数据,然后通过分隔符来分割分别获取所有变量名和变量值,最后oDesign.SetVariableValue函数进行参量的一键更新,整段代码如下(原文文末二维码附有下载链接):

' ----------------------------------------------

' ImportVariables,适用于ANSYS ElectronicsDesktop Version(2017, 2)及以上

' ----------------------------------------------

Dim oAnsoftApp

Dim oDesktop

Dim oProject

Dim oDesign

Dim oEditor

Dim oModule

Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")

Set oDesktop = oAnsoftApp.GetAppDesktop()

oDesktop.RestoreWindow

Set oProject = oDesktop.GetActiveProject()

Set oDesign = oProject.GetActiveDesign()

FileDir="C:\Users\Administrator\Desktop\VBS\test.txt"

Set Object = CreateObject("Scripting.FileSystemObject")

Set fid=Object.OpenTextFile(FileDir,1,True)

Do While fid.AtEndOfLine <> True

content=fid.ReadLine

pos=InStr(1,content,"=")

Number=Len(content)

VariableName=left(content,pos-1)

VariableValue=right(content,Number-pos)

oDesign.SetVariableValue VariableName,VariableValue

loop

fid.Close

oDesktop.AddMessage oProject.GetName(), oDesign.GetName(), 0, "----------------------------------------------------------"

oDesktop.AddMessage oProject.GetName(), oDesign.GetName(), 0, FileDir

oDesktop.AddMessage oProject.GetName(), oDesign.GetName(), 0, "Import variables complete!"

这两段vbs代码使用前需要根据个人电脑进行对FileDir路径进行重新赋值,然后右键以记事本打开,通过文件->另存为视查是否以ANSI格式保存。

​接下来需要打开一个工程文件,点击高亮以激活需要操作的设计文件,通过Run Script去执行参量导入和导出功能。

​需要注意的是,本vbs代码需要在HFSS17.2版本及以上运行!如果HFSS15想运行此代码,需要将ExportVariables.vbs和ImportVariables中的Ansoft.ElectronicsDesktop替换为AnsoftHfss.HfssScriptInterface,并且注释掉oDesktop.AddMessage开头的几处代码,如下图所示。

上面代码相关的函数其实都来自HFSS自带的Scripting Guide,Help文档是第一生产力!

​低版本HFSS打开高版本文件

接下来是本次推文的小彩蛋。大家肯定很恼火装了HFSS17,别人转一个HFSS2020 R2版本建立的aedt文件,就死活打不开,太不方便了。

​HFSS15想打开HFSS17的工程文件,改后缀名.aedt为.hfss也会提示软件是以2017.2版本保存的,最后还是打不开。

​这里提供一个解决办法,还是祭出我们的记事本。通过打开一个后缀名为.aedt的HFSS17文件和后缀名为.hfss的HFSS15文件,对比前几行的差异,可以发现Product和Version有出入。因此收到别人发送的高版本工程文件时,右键记事本将这两处改为自己版本所能打开的再保存,即可实现低版本软件打开高版本工程文件。

不过需要注意的是高低版本兼容的是变量和建模信息,对于高版本新增的一些边界条件,激励等设置,低版本软件不兼容,也会出现打不开的现象,这里就需要发送方提前删除一些不兼容的高版本设置。

 作者:微波天线工程师

--END--

文章来源:vbs脚本一键导入导出HFSS的Local Variables - RFASK射频问问