摘要:
HFSS作為高頻結(jié)構(gòu)設(shè)計(jì)的首選工具和行業(yè)標(biāo)準(zhǔn),能從幾何結(jié)構(gòu)、材料特性到分析、控制及所有后處理進(jìn)行全參量化設(shè)計(jì)。可對(duì)于仿真設(shè)計(jì)相關(guān)的工程師來(lái)說,利用HFSS軟件進(jìn)行3D可視化建模容易,但是后期的模型維護(hù)和傳閱卻難以為繼。
本文使用的電磁仿真軟件為ANSYS Electronics Desktop Version 2017.2.0
0 1HFSS腳本錄制
下圖所示環(huán)形器的HFSS建模不難,但是工程師們建模習(xí)慣不同,最后各自的仿真模型在進(jìn)行傳閱時(shí),其可讀性就難免參差不齊。有的喜歡預(yù)估好初始值后進(jìn)行純數(shù)字建模,有的喜歡variables和數(shù)字混用,即使是有些人采用全參量化建模,由于大家命名習(xí)慣大相徑庭,最終拿到別人的仿真文件進(jìn)行參數(shù)微調(diào)時(shí),也會(huì)對(duì)模型的建立邏輯和某些結(jié)構(gòu)對(duì)應(yīng)的變量有所困惑。
特別是在別人已經(jīng)建立好的模型上進(jìn)行調(diào)試優(yōu)化時(shí),面對(duì)“一磚一瓦”構(gòu)成的復(fù)雜結(jié)構(gòu)時(shí),想通過Delete Last Operation操作來(lái)窺視開發(fā)者的模型確實(shí)比較麻煩。
這里提供一種最簡(jiǎn)單的方法:HFSS自帶的Record Script To File功能進(jìn)行vbs腳本的錄制。可能大家聽說過這個(gè)功能,但是在實(shí)施過程中遇到一些困難。比如明明錄制好了,再次Run Script進(jìn)行重構(gòu)模型為什么報(bào)錯(cuò)呢?
如下圖所示,隨便建立一個(gè)文件進(jìn)行模型的繪制,對(duì)其進(jìn)行vbs腳本錄制:
Run Script后,HFSS軟件提示報(bào)錯(cuò),很多人第一次使用這個(gè)可能都會(huì)遇到這種問題。
其實(shí)只需要在錄制腳本前,軟件處于空文件狀態(tài)(Project Manager下無(wú)Project和Design),這樣從零開始錄制的腳本執(zhí)行起來(lái)就不會(huì)報(bào)錯(cuò)。
經(jīng)過上述操作后錄制的vbs代碼如下(可直接復(fù)制到txt文件里,將文件類型后綴改為.vbs,在HFSS軟件中的Tool-》Run Script載入執(zhí)行即可):
‘ ----------------------------------------------’ Script Recorded by ANSYS Electronics Desktop Version 2017.2.0‘ ----------------------------------------------Dim oAnsoftAppDim oDesktopDim oProjectDim oDesignDim oEditorDim oModuleSet oAnsoftApp = CreateObject(“Ansoft.ElectronicsDesktop”)Set oDesktop = oAnsoftApp.GetAppDesktop()oDesktop.RestoreWindowSet oProject = oDesktop.NewProjectoProject.InsertDesign “HFSS”, “HFSSDesign1”, “DrivenModal”,
“”Set oDesign = oProject.SetActiveDesign(“HFSSDesign1”)Set oEditor = oDesign.SetActiveEditor(“3D Modeler”)oEditor.CreateRegularPolyhedron Array(“NAME:PolyhedronParameters”, “XCenter:=”, _ “-0.4mm”, “YCenter:=”, “-0.4mm”, “ZCenter:=”, “0mm”, “XStart:=”, “0.2mm”, “YStart:=”, _ “0.2mm”, “ZStart:=”, “0mm”, “Height:=”, “1.2mm”,
“NumSides:=”, “12”, “WhichAxis:=”, _ “Z”), Array(“NAME:Attributes”, “Name:=”, “RegularPolyhedron1”, “Flags:=”, “”, “Color:=”, _ “(143 175 143)”, “Transparency:=”, 0, “PartCoordinateSystem:=”, “Global”, “UDMId:=”, _ “”, “MaterialValue:=”, “” & Chr(34) & “vacuum” & Chr(34) & “”, “SurfaceMaterialValue:=”, _ “” & Chr(34) & “” & Chr(34) & “”, “SolveInside:=”, true, “IsMaterialEditable:=”, _ true,
“UseMaterialAppearance:=”, false)oEditor.CreateCylinder Array(“NAME:CylinderParameters”,
“XCenter:=”, “0.8mm”, “YCenter:=”, _ “1.8mm”, “ZCenter:=”, “0mm”, “Radius:=”, “0.2mm”, “Height:=”, “1mm”, “WhichAxis:=”, _ “Z”, “NumSides:=”, “0”), Array(“NAME:Attributes”, “Name:=”, “Cylinder1”, “Flags:=”, _ “”,
“Color:=”, “(143 175 143)”, “Transparency:=”, 0, “PartCoordinateSystem:=”,
_ “Global”, “UDMId:=”, “”, “MaterialValue:=”, “” & Chr(34) & “vacuum” & Chr(34) & “”, “SurfaceMaterialValue:=”, _ “” & Chr(34) & “” & Chr(34) & “”,
“SolveInside:=”, true, “IsMaterialEditable:=”, _ true, “UseMaterialAppearance:=”, false)oEditor.CreateBox Array(“NAME:BoxParameters”, “XPosition:=”,
“0.6mm”, “YPosition:=”, _ “-2.6mm”, “ZPosition:=”, “0mm”, “XSize:=”, “0.8mm”, “YSize:=”, “0.4mm”, “ZSize:=”, _ “0.8mm”), Array(“NAME:Attributes”, “Name:=”, “Box1”, “Flags:=”, “”, “Color:=”, _ “(143 175 143)”,
“Transparency:=”, 0, “PartCoordinateSystem:=”, “Global”, “UDMId:=”, _ “”, “MaterialValue:=”, “” & Chr(34) & “vacuum” & Chr(34) & “”,
“SurfaceMaterialValue:=”, _ “” & Chr(34) & “” & Chr(34) & “”, “SolveInside:=”, true, “IsMaterialEditable:=”, _ true, “UseMaterialAppearance:=”, false)oEditor.CreateCone Array(“NAME:ConeParameters”, “XCenter:=”, “2.2mm”, “YCenter:=”, _ “-0.2mm”,
“ZCenter:=”, “0mm”, “WhichAxis:=”, “Z”, “Height:=”, “0.6mm”, “BottomRadius:=”, _ “0.447213595499958mm”, “TopRadius:=”, “0.4mm”), Array(“NAME:Attributes”, “Name:=”, _ “Cone1”,
“Flags:=”, “”, “Color:=”, “(143 175 143)”, “Transparency:=”, 0, “PartCoordinateSystem:=”, _ “Global”, “UDMId:=”, “”, “MaterialValue:=”, “” & Chr(34) & “vacuum” & Chr(34) & “”,
“SurfaceMaterialValue:=”, _ “” & Chr(34) & “” & Chr(34) & “”, “SolveInside:=”, true, “IsMaterialEditable:=”, _ true, “UseMaterialAppearance:=”, false)
除了錄制建模的腳本,我們還可以進(jìn)行繁瑣的數(shù)據(jù)處理、導(dǎo)出步驟的錄制,如下面代碼就是為了實(shí)現(xiàn)S11和3D方向圖數(shù)據(jù)的一鍵式導(dǎo)出。
’ ----------------------------------------------‘ Script Recorded by ANSYS Electronics Desktop Version 2017.2.0’
----------------------------------------------Dim oAnsoftAppDim oDesktopDim oProjectDim oDesignDim oEditorDim oModuleSet oAnsoftApp = CreateObject(“Ansoft.ElectronicsDesktop”)Set oDesktop = oAnsoftApp.GetAppDesktop()oDesktop.RestoreWindow‘dipole_simu:項(xiàng)目名稱 Project NameSet oProject = oDesktop.SetActiveProject(“dipole_simu”)’veeDipole_idealFeed1:設(shè)計(jì)名稱
Design NameSet oDesign = oProject.SetActiveDesign(“veeDipole_idealFeed1”)Set oModule = oDesign.GetModule(“ReportSetup”)‘oModule.ExportToFile “Results下的報(bào)告名稱”, “csv保存路徑+csv文件名”oModule.ExportToFile “S11”, “C:/Users/Administrator/Desktop/S11.csv”oModule.ExportToFile “Gain Plot 1”, _ “C:/Users/Administrator/Desktop/Gain Plot 1.csv”
0 2HFSS API腳本化建模
前文已經(jīng)介紹了如何錄制腳本,便于模型的重建和數(shù)據(jù)的導(dǎo)出。但是對(duì)方收到vbs文件后,要進(jìn)行模型的修改,沒有注釋其實(shí)看起來(lái)也是一團(tuán)糟的。雖然可以通過多次刪除部分vbs代碼一步步回構(gòu)到自己想要的節(jié)點(diǎn),不過這種方法也是有點(diǎn)麻煩。
幸運(yùn)的是,matlab調(diào)用hfss的這項(xiàng)工程早已在Github上模塊化并開源了。
最后我們可以選擇排的最靠前的yuip/hfss-api,對(duì)其zip文件進(jìn)行下載。
因?yàn)槎际怯⑽淖⑨專枰褂谜哂幸稽c(diǎn)英文閱讀水平,通過examples里面的示例進(jìn)行各模塊function的功能以及參量傳入、調(diào)用方法的熟練使用。
有了matlab和hfssapi后,能做的事情就多了,比如下面這個(gè)就利用matlab讀入圖像并保存各像素點(diǎn)rgb數(shù)值,然后再利用hfssapi中的hfssRectangle和hfssSetColor函數(shù)進(jìn)行圖像在HFSS中的重繪。
想更深一步了解hfss腳本,可以在ANSYS Electronics Desktop Version 2017.2.0及以上版本中的Help中打開HFSS Scripting這個(gè)幫助文檔,一千多頁(yè)的內(nèi)容特別詳實(shí)。
想象一下,你給別人一個(gè)vbs腳本,就幾kB,然后對(duì)方就能復(fù)構(gòu)你的HFSS模型,是不是特別酷炫,還節(jié)省占用空間?
原文標(biāo)題:學(xué)個(gè)Antenna:HFSS腳本建模入門
文章出處:【微信公眾號(hào):微波射頻網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
責(zé)任編輯:haq
-
天線
+關(guān)注
關(guān)注
68文章
3184瀏覽量
140713 -
仿真
+關(guān)注
關(guān)注
50文章
4048瀏覽量
133431 -
hfss
+關(guān)注
關(guān)注
32文章
167瀏覽量
50263
原文標(biāo)題:學(xué)個(gè)Antenna:HFSS腳本建模入門
文章出處:【微信號(hào):mwrfnet,微信公眾號(hào):微波射頻網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論