打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
HFSS脚本建模入门

SUBSCRIBE to US

学个Antenna是以天线仿真和调试为主理论原理为辅干货天线技术专栏,包括天线入门知识以及各类天线的原理简介、仿真软件建模、设计、调试过程及思路

摘要:

HFSS作为高频结构设计的首选工具和行业标准,从几何结构、材料特性到分析、控制及所有后处理进行全参量化设计。可对于仿真设计相关的工程师来说,利用HFSS软件进行3D可视化建模容易,但是后期的模型维护和传阅却难以为继。

本文使用的电磁仿真软件为ANSYS Electronics Desktop Version 2017.2.0

0 1
HFSS脚本录制


下图所示环形器的HFSS建模不难,但是工程师们建模习惯不同,最后各自的仿真模型在进行传阅时,其可读性就难免参差不齐。有的喜欢预估好初始值后进行纯数字建模,有的喜欢variables和数字混用,即使是有些人采用全参量化建模,由于大家命名习惯大相径庭,最终拿到别人的仿真文件进行参数微调时,也会对模型的建立逻辑和某些结构对应的变量有所困惑。

特别是在别人已经建立好的模型上进行调试优化时,面对“一砖一瓦”构成的复杂结构时,想通过Delete Last Operation操作来窥视开发者的模型确实比较麻烦。

这里提供一种最简单的方法:HFSS自带的Record Script To File功能进行vbs脚本的录制。可能大家听说过这个功能,但是在实施过程中遇到一些困难。比如明明录制好了,再次Run Script进行重构模型为什么报错呢?

如下图所示,随便建立一个文件进行模型的绘制,对其进行vbs脚本录制:

Run Script后,HFSS软件提示报错,很多人第一次使用这个可能都会遇到这种问题。

其实只需要在录制脚本前,软件处于空文件状态(Project Manager下无Project和Design),这样从零开始录制的脚本执行起来就不会报错。

经过上述操作后录制的vbs代码如下(可直接复制到txt文件里,将文件类型后缀改为.vbs,在HFSS软件中的Tool->Run Script载入执行即可):

' ----------------------------------------------' 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)

除了录制建模的脚本,我们还可以进行繁琐的数据处理、导出步骤的录制,如下面代码就是为了实现S11和3D方向图数据的一键式导出。

' ----------------------------------------------' 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:项目名称 Project NameSet oProject = oDesktop.SetActiveProject('dipole_simu')'veeDipole_idealFeed1:设计名称 Design NameSet oDesign = oProject.SetActiveDesign('veeDipole_idealFeed1')Set oModule = oDesign.GetModule('ReportSetup')'oModule.ExportToFile 'Results下的报告名称', '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 2
HFSS API脚本化建模


前文已经介绍了如何录制脚本,便于模型的重建和数据的导出。但是对方收到vbs文件后,要进行模型的修改,没有注释其实看起来也是一团糟的。虽然可以通过多次删除部分vbs代码一步步回构到自己想要的节点,不过这种方法也是有点麻烦。

幸运的是,matlab调用hfss的这项工程早已在Github上模块化并开源了。

由于Github在境内大概率访问不了,这里贴了一条镜像的链接:

https://github.com.cnpmjs.org/yuip/hfss-api

如果遇到下面问题,多刷新几次就好了:

最后我们可以选择排的最靠前的yuip/hfss-api,对其zip文件进行下载。

因为都是英文注释,需要使用者有一点英文阅读水平,通过examples里面的示例进行各模块function的功能以及参量传入、调用方法的熟练使用。

有了matlab和hfssapi后,能做的事情就多了,比如下面这个就利用matlab读入图像并保存各像素点rgb数值,然后再利用hfssapi中的hfssRectangle和hfssSetColor函数进行图像在HFSS中的重绘。

想更深一步了解hfss脚本,可以在ANSYS Electronics Desktop Version 2017.2.0及以上版本中的Help中打开HFSS Scripting这个帮助文档,一千多页的内容特别详实。

想象一下,你给别人一个vbs脚本,就几kB,然后对方就能复构你的HFSS模型,是不是特别酷炫,还节省占用空间?

应读者朋友们对这个系列文章的喜爱,也为了能够更系统更全面地介绍MATLAB-HFSS-API相关知识,现推出该系列课程,共25课时,欢迎大家加入课程学习!

点击名片关注我们-学习更多干货知识

射频问问 - 专业微波射频技术社区

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
分享vbs脚本办事的乐趣
经典的恶作剧程序
vbs之一:简易QQ狂发!
如何防范vbs脚本病毒
SecureCRT中用vbs脚本批量执行unix命令
岁月如歌 用EverNote HoeKey AutoSave Script 收集...
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服