0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Excel真的可以调用HFSS?

iIeQ_mwrfnet 来源:微波射频网 作者:94巨蟹座少年 2021-06-28 15:34 次阅读

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

摘要:

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

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

0 1Excel 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编辑器。

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

Sub Hello() Dim bj As String bj = InputBox(“请输入您的文本”, “请输入”) MsgBox “确定按钮被点击”, vbOKOnlyEnd Sub

0 2Excel调用HFSS软件

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

‘oAnsoftApp为VBScript提供了访问Ansys.ElectronicsDesktop的句柄Set oAnsoftApp = CreateObject(“Ansoft.ElectronicsDesktop”)

’oDesktop用于执行桌面级操作,包括项目管理。Set oDesktop = oAnsoftApp.GetAppDesktop()

‘Project对象对应于产品中打开的一个项目。它用于操纵项目及其数据。 ’其数据包括变量、材料定义等。Set oProject = oDesktop.GetActiveProject()

‘oDesign对象对应于项目中已存在的一个设计实例。该对象用于操纵设计及其数据。’它的数据包括变量、模块和编辑器。Set oDesign = oProject.GetActiveDesign()

‘oEditor 对象对应于已存在的一个编辑器,例如3D建模器、布局或原理图编辑器。’该对象用于在编辑器中添加和修改数据。Set oEditor = oDesign.SetActiveEditor(“3D Modeler”)

‘oModule 对象对应设计中的一个模块。Modules 用于处理一组相关功能。Set oModule = oDesign.GetModule(“BoundarySetup”)

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

首先你要创建一个Ansoft.ElectronicsDesktop对象,并获取oDesktop用于执行桌面级操作。这就是你手动打开HFSS软件并获得该软件控制权的那一步

接着oProject和oDesign就是interwetten与威廉的赔率体系 你新建Project和Design,获得其句柄

然后oEditor和oModule主要是获取我们建模、设置边界条件、求解器、建立报告等操作的句柄

纸上得来终觉浅,我们可以打开HFSS的脚本录制功能,在录制的代码中来学习:

’ ----------------------------------------------‘ 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”, “”

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

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

Set oDesign = oProject.SetActiveDesign(“HFSSDesign1”) Set oEditor = oDesign.SetActiveEditor(“3D Modeler”)

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

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

0 3简单实例演示

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

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

Sub Training1() Dim oAnsoftApp Dim oDesktop Dim oProject Dim oDesign Dim oEditor Dim oModule

Dim sub1_H, sub1_W, sub1_L sub1_H = 0.254: sub1_W = 20

Set oAnsoftApp = CreateObject(“Ansoft.ElectronicsDesktop”) Set oDesktop = oAnsoftApp.GetAppDesktop() Set oProject = oDesktop.NewProject oProject.InsertDesign “HFSS”, “Test”, “DrivenModal”, “” Set oDesign = oProject.SetActiveDesign(“Test”) Set oEditor = oDesign.SetActiveEditor(“3D Modeler”)

‘Variable Define InsertVariable oDesign, “sub1_H”, CStr(sub1_H), “mm” InsertVariable oDesign, “sub1_W”, CStr(sub1_W), “mm” InsertVariable oDesign, “sub1_L”, “2 * sub1_W”, “”

’Create the Substrate CreateBox oEditor, “Sub1”, Array(“-sub1_W/2”, “0mm”, “0mm”), _ Array(“sub1_W”, “sub1_L”, “-sub1_H”), “vacuum”End Sub

Function InsertVariable(oDesign, Name, value, Unit) oDesign.ChangeProperty _ Array(“NAME:AllTabs”, _ Array(“NAME:LocalVariableTab”, _ Array(“NAME:PropServers”, _ “LocalVariables”), _ Array(“NAME:NewProps”, _ Array(“NAME:” + Name, _ “PropType:=”, “VariableProp”, “UserDef:=”, True, _ “Value:=”, value + Unit))))End Function‘模型建立部分Function CreateBox(oEditor, Boxname, S1, D1, material) oEditor.CreateBox Array(“NAME:BoxParameters”, “XPosition:=”, S1(0), “YPosition:=”, _ S1(1), “ZPosition:=”, S1(2), “XSize:=”, D1(0), “YSize:=”, D1(1), “ZSize:=”, _ D1(2)), Array(“NAME:Attributes”, “Name:=”, Boxname, “Flags:=”, “”, “Color:=”, _ “(34 139 34)”, “Transparency:=”, 0, “PartCoordinateSystem:=”, “Global”, “UDMId:=”, _ “”, “MaterialValue:=”, “” & Chr(34) & material & Chr(34) & “”, “SurfaceMaterialValue:=”, _ “” & Chr(34) & “” & Chr(34) & “”, “SolveInside:=”, True, “IsMaterialEditable:=”, _ True, “UseMaterialAppearance:=”, False, “IsLightweight:=”, False)End Function

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

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微软
    +关注

    关注

    4

    文章

    6591

    浏览量

    104031
  • VBA
    VBA
    +关注

    关注

    0

    文章

    18

    浏览量

    11908
  • 代码
    +关注

    关注

    30

    文章

    4780

    浏览量

    68535
  • hfss
    +关注

    关注

    32

    文章

    167

    浏览量

    50294
  • 求解器
    +关注

    关注

    0

    文章

    77

    浏览量

    4532

原文标题:Excel也能调用HFSS?

文章出处:【微信号:mwrfnet,微信公众号:微波射频网】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    传统电子表格Excel和Teable多维表格数据库的区别?

    传统Excel是一款功能强大的电子表格软件,它的数据处理 分析以及图表制作等功能给工作带来了很多便利,但也有自身的局限性,本文介绍的多维表格Teable数据库将在传统电子表格Excel的特性上,增强数据处理能力,提升工作效率.
    的头像 发表于 10-23 16:44 336次阅读

    tina仿真的噪声分析,可以分析电流噪声吗?

    tina仿真的噪声分析,可以分析电流噪声吗
    发表于 08-06 08:23

    还在Excel中管理您的持续改进项目吗?

    对于大多数公司来说,Microsoft Excel是一种可靠的资源,它确实提供了极高的价值。然而,当它被用来跟踪持续改进项目时,它的价值就减少了。浪费时间从不同内部系统的不同报告中收集数据,会占
    的头像 发表于 07-01 11:07 266次阅读

    LabVIEW调用Aspose.dll实现excel读写、图片插入,

    使用labview读写excel,有多种方式。 1、使用LV自带的excel函数库,缺点是电脑必须安装相应版本的excel,且容易报各种错误。放弃。 2、调用NPOI的dll,免费,不
    发表于 06-24 17:01

    怎么用fatfs写excel

    的论坛发现,确实有转EXCEL的事情。 所以,我想,用单片机去建立EXCEL文件,代价太高了,支出的ROM不少啊,倒是把XML命令格式搞清楚肯定可以。 是否可以先建立一个
    发表于 05-11 07:59

    ADS调用spectre网表仿真异常—薛定谔的NetlistInclude

    ADS是支持调用spice/spectre等网表文件进行仿真的可以用NetlistInclude控件来进行调用
    的头像 发表于 03-07 09:57 2334次阅读
    ADS<b class='flag-5'>调用</b>spectre网表仿真异常—薛定谔的NetlistInclude

    AT socket可以多线程调用吗?

    请问AT socket 可以多线程调用吗? 有互锁机制吗,还是要自己做互锁。
    发表于 03-01 08:22

    使用Windows Mesh来观看CYBT-213043-MESH的环境温度信息,有什么方法可以保存温度数据并将其传输到excel吗?

    现在我正在使用Windows Mesh客户端应用程序来观看CYBT-213043-MESH的环境温度信息。 我的问题是有什么方法可以保存温度数据并将其传输到excel吗? 谢谢,
    发表于 03-01 06:26

    介绍一种使用HFSS进行车载天线布局仿真及评估天线性能的方法

    ANSYS HFSS的FEM算法求解电小尺寸问题的能力在业界已被广泛认可。
    的头像 发表于 02-25 11:43 2145次阅读
    介绍一种使用<b class='flag-5'>HFSS</b>进行车载天线布局仿真及评估天线性能的方法

    verilog如何调用其他module

    。 1.2 为什么要调用其他模块? 在复杂的设计中,我们通常需要实现各种不同的功能,并且这些功能往往可以通过不同的模块来实现。通过调用其他模块,我们可以将问题分解为更小的子问题,并且
    的头像 发表于 02-22 15:56 5778次阅读

    linux用gdb调试遇到函数调用怎么办?

    。 要顺利进行函数调用的调试,首先需要准备好代码和符号表。在编译代码时,需要加上 `-g` 参数来生成调试信息。这样编译器会在可执行文件中嵌入符号表,以供GDB使用。如果没有生成符号表,我们将很难进行有意义的调试。 一旦准备完毕,我们可以启动
    的头像 发表于 01-31 10:33 712次阅读

    Linux内核中信号相关的系统调用

    正如我们所知,运行在用户态下的程序可以发送和接收信号。这意味着必须定义一组系统调用来允许这类操作。不幸的是,由于历史原因,有些系统调用可能功能相同。 因此,其中一些系统调用永远不会被
    的头像 发表于 01-20 09:34 727次阅读

    求助:labview报表excel出现闪屏

    我在LABVIEW程序里建了一个EXCEL报表程序,报表的窗口状态是no change。如果我不打开excel,就不会弹出所查的表;但是当我打开任意一个不相关的excel表格之后,查找的exc
    发表于 01-17 17:00

    labview处理excel数据中的粗大误差

    的一个主要因素。在LabVIEW中,我们可以利用其强大的数据处理和分析功能来识别和处理Excel数据中的粗大误差,从而提高数据的准确性和可靠性。 首先,让我们了解一下粗大误差的定义。粗大误差是指与其他观测值显著不符的观测结果。这种误差通
    的头像 发表于 01-05 16:15 911次阅读

    labview读取excel数据中的每个数据

    如何使用 LabVIEW 读取 Excel 数据,并对其中的每个数据进行处理。 Excel 是一种常用的电子表格软件,广泛用于数据存储和分析。在实际的工程项目中,常常需要从 Excel 中读取数据,并进行数据处理和分析。LabV
    的头像 发表于 12-26 11:19 3773次阅读