學個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-
作者:94巨蟹座少年
大家持續關注“微波射頻網”,后續精彩不斷~
本文為MWRF.NET原創文章,未經允許不得轉載,如需轉載請聯系market#mwrf.net(#換成@)