Excel也能调用HFSS?

2022-01-12 来源:微波射频网 作者:94巨蟹座少年 字号:

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

摘要:

学个Antenna:HFSS脚本建模入门一文,对HFSS脚本建模进行了入门级的介绍,不过要装上日趋臃肿、动辄十几G的MATLAB软件。幸运的是,HFSS支持VBScript进行二次开发,因此在Excel中对HFSS进行调用不是梦!

本文使用的软件为AnsysEM 18.2和Excel 2013

Excel vba

Microsoft Visual Basic for application,简称为VBA,是Visual Basic的一种宏语言,是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。那这个和HFSS软件有啥联系么?

在HFSS软件中顺着Help文件找到HFSS Scripting(文末有HFSS官方HFSS Scripting Guide下载链接),打开该PDF,在Introduction to VBScript章节,我们可以获得以下信息。

  • ANSYS Electronics Desktop uses theMicrosoft® Visual Basic® Scripting Edition (VBScript) scripting language to recordmacros. VBScript is based on theMicrosoft Visual Basic programming language
  • ANSYS Electronics Desktop 使用 Microsoft® Visual Basic® Scripting Edition (VBScript) 脚本语言来记录宏。 VBScript 基于 Microsoft Visual Basic 编程语言
  • Using scripts is a fast, effective way to accomplish tasks you want to repeat.When you execute a script, the commands in the script are performed.
  • 使用脚本是完成您想要重复的任务的一种快速、有效的方法。当您执行脚本时,脚本中的命令就会被执行。
  • You can write a script using any text editor or you can record a script fromwithin the ANSYS Electronics Desktop interface. After recording the script fromwithin ANSYS Electronics Desktop, you can thenmodify it if necessary using a text editor.
  • 您可以使用任何文本编辑器编写脚本,也可以从 ANSYS Electronics Desktop 界面中记录脚本。 在 ANSYS Electronics Desktop 中记录脚本后,如有必要,您可以使用文本编辑器对其进行修改。

由于Excel内置了VBA代码编辑器,因此理论上可以用其进行调用HFSS进行建模。

新建一个excel文件,另存为.xlsm格式(扩展名xlsm在打开excel文件时,会自动执行宏代码)。如下图所示,即可打开VBA编辑器。

一个简单的测试代码如下:

1  Sub Hello()

2   Dim bj As String

3   bj = InputBox("请输入您的文本", "请输入")

4    MsgBox "确定按钮被点击", vbOKOnly

5  End Sub

Excel调用HFSS软件

当上面的步骤都顺畅无阻后,我们可以进入下一环节,即在Excel vba编辑器里面编写代码调用HFSS软件。首先我们要打开HFSS软件,并保证Project Manager下为空,防止后续出现报错现象。

下图是对ANSYS Electronics脚本的各模块概述

1  'oAnsoftApp为VBScript提供了访问Ansys.ElectronicsDesktop的句柄

2  Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop"

 

1  'oDesktop用于执行桌面级操作,包括项目管理。

2  Set oDesktop = oAnsoftApp.GetAppDesktop()

 

1  'Project对象对应于产品中打开的一个项目。它用于操纵项目及其数据。

2  '其数据包括变量、材料定义等。

3  Set oProject = oDesktop.GetActiveProject()

 

1  'oDesign对象对应于项目中已存在的一个设计实例。该对象用于操纵设计及其数据。

2  '它的数据包括变量、模块和编辑器。

3  Set oDesign = oProject.GetActiveDesign()

 

1  'oEditor 对象对应于已存在的一个编辑器,例如3D建模器、布局或原理图编辑器。

2  '该对象用于在编辑器中添加和修改数据。

3  Set oEditor = oDesign.SetActiveEditor("3D Modeler")

 

1  'oModule 对象对应设计中的一个模块。Modules 用于处理一组相关功能。

2  Set oModule = oDesign.GetModule("BoundarySetup")

 

当然,看完上面的内容可能会云里雾里,现在直观地解释下:

  •     首先你要创建一个Ansoft.ElectronicsDesktop对象,并获取oDesktop用于执行桌面级操作。这就是你手动打开HFSS软件并获得该软件控制权的那一步
  •     接着oProject和oDesign就是模拟你新建Project和Design,获得其句柄
  •     然后oEditor和oModule主要是获取我们建模、设置边界条件、求解器、建立报告等操作的句柄纸上得来终觉浅,我们可以打开HFSS的脚本录制功能,在录制的代码中来学习:

1  ' ----------------------------------------------

2  ' Script Recorded by ANSYS Electronics Desktop Version 2017.2.0

3   ' ----------------------------------------------

4   Dim oAnsoftApp

5   Dim oDesktop

6   Dim oProject

7   Dim oDesign

8   Dim oEditor

9   Dim oModule

10  Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")

11  Set oDesktop = oAnsoftApp.GetAppDesktop()

12  oDesktop.RestoreWindow

13  Set oProject = oDesktop.NewProject

14  oProject.InsertDesign "HFSS", "HFSSDesign1", "DrivenModal", ""

从上面的代码中,我们可以很直观地感受到:先进行oAnsoftApp,oDesktop,oProject,oDesign,oEditor,oModule五要素的变量定义;接着对oAnsoftApp,oDesktop配置句柄;然后利用oProject.InsertDesign插入一个"HFSSDesign1"的设计文件。

剩下的oEditor,oModule我们可以根据上面的编程逻辑进行句柄的设置。

1   Set oDesign = oProject.SetActiveDesign("HFSSDesign1")

2  Set oEditor = oDesign.SetActiveEditor("3D Modeler")

到此为止,我们就将调用HFSS需要的句柄全部掌握在手里了,后续在Excel中调用HFSS软件指日可待。

在官方HFSS Scripting Guide的P51:Sample HFSS Script里有一段比较详细的英文教程,建议大家先观摩下。

简单实例演示

以上内容都读懂后,剩下的就是自己录制脚本,分析代码,学习修改代码,封装成function进行调用。

这里给出本人部署好的一段代码,可直接粘贴到Excel vba编辑器进行复现:

1  Sub Training1()

2     Dim oAnsoftApp

3    Dim oDesktop

4    Dim oProject

5    Dim oDesign

6    Dim oEditor

7    Dim oModule

8

9    Dim sub1_H, sub1_W, sub1_L

10    sub1_H = 0.254: sub1_W = 20

11

12    Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")

13    Set oDesktop = oAnsoftApp.GetAppDesktop()

14    Set oProject = oDesktop.NewProject

15    oProject.InsertDesign "HFSS", "Test", "DrivenModal", ""

16    Set oDesign = oProject.SetActiveDesign("Test")

17    Set oEditor = oDesign.SetActiveEditor("3D Modeler")

18

19    'Variable Define

20    InsertVariable oDesign, "sub1_H", CStr(sub1_H), "mm"

21    InsertVariable oDesign, "sub1_W", CStr(sub1_W), "mm"

22    InsertVariable oDesign, "sub1_L", "2 * sub1_W", ""

23

24    'Create the Substrate

25    CreateBox oEditor, "Sub1", Array("-sub1_W/2", "0mm", "0mm"), _

26    Array("sub1_W", "sub1_L", "-sub1_H"), "vacuum"

27End Sub

28

29Function InsertVariable(oDesign, Name, value, Unit)

30    oDesign.ChangeProperty _

31    Array("NAME:AllTabs", _

32    Array("NAME:LocalVariableTab", _

33    Array("NAME:PropServers", _

34    "LocalVariables"), _

35    Array("NAME:NewProps", _

36    Array("NAME:" + Name, _

37    "PropType:=", "VariableProp", "UserDef:=", True, _

38    "Value:=", value + Unit))))

39End Function

40'模型建立部分

41Function CreateBox(oEditor, Boxname, S1, D1, material)

42    oEditor.CreateBox Array("NAME:BoxParameters", "XPosition:=", S1(0), "YPosition:=", _

43    S1(1), "ZPosition:=", S1(2), "XSize:=", D1(0), "YSize:=", D1(1), "ZSize:=", _

44    D1(2)), Array("NAME:Attributes", "Name:=", Boxname, "Flags:=", "", "Color:=", _

45    "(34 139 34)", "Transparency:=", 0, "PartCoordinateSystem:=", "Global", "UDMId:=", _

46    "", "MaterialValue:=", "" & Chr(34) & material & Chr(34) & "", "SurfaceMaterialValue:=", _

47    "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", True, "IsMaterialEditable:=", _

48    True, "UseMaterialAppearance:=", False, "IsLightweight:=", False)

49End Function

以上代码的编写还是要有一定vba编程的语法基础,难点在于根据录制的脚本代码找规律,将其封装为普适的Function,便于开发者自行调用。

下载HFSS Scripting Guide

PDF文件和仿真文件在下面的总文件夹进行更新:

识别或扫码二维码


下载文件

*本文的图片部分来自HFSS和Excel软件

*欢迎左侧一键转发至朋友圈,同时右侧在看与点赞

以上便是要给大家分享的内容,希望对大家有所帮助~~大家持续关注“微波射频网”,后续精彩不断~
本期原创工程师:94巨蟹座少年

本文为MWRF.NET原创文章,未经允许不得转载,如需转载请联系market#mwrf.net(#换成@)

主题阅读:Excel  vba        HFSS软件