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就是模拟你新建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

    文章

    6643

    浏览量

    104839
  • VBA
    VBA
    +关注

    关注

    0

    文章

    19

    浏览量

    11955
  • 代码
    +关注

    关注

    30

    文章

    4857

    浏览量

    69524
  • hfss
    +关注

    关注

    32

    文章

    167

    浏览量

    50513
  • 求解器
    +关注

    关注

    0

    文章

    78

    浏览量

    4596

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

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

收藏 人收藏

    评论

    相关推荐

    HFSS 自动化建模工具

    因工作需求,自己写的HFSS参数自动化建模工具,目前只实现了常用的四种模型,可定制化,如需可联系 qq:1300038043
    发表于 02-27 17:44

    Spire.Cloud.Excel云端Excel文档处理SDK

    Spire.Cloud.Excel 是一款专业的云端 Excel 文档处理 SDK,开发人员可调用 SDK 在云端创建、读取、编辑、转换、及保存 Excel 文档。作为一款完全独立的
    的头像 发表于 02-13 11:03 156次阅读
    Spire.Cloud.<b class='flag-5'>Excel</b>云端<b class='flag-5'>Excel</b>文档处理SDK

    使用插件将Excel连接到MySQL/MariaDB

    可以快速地将数据从 MySQL 或 MariaDB 加载到 Excel,立即从数据库刷新 Excel 工作簿中的数据,编辑这些数据,并将它们保存回 MySQL。之后您能够像使用的 Excel
    的头像 发表于 01-20 12:38 242次阅读
    使用插件将<b class='flag-5'>Excel</b>连接到MySQL/MariaDB

    适用于Oracle的Devart Excel插件:轻松管理数据

    使用加载项将 Excel 连接到 Oracle Microsoft Excel 插件可以连接到 Oracle,能够快速地将数据从 Oracle 加载到 Excel,且立即从数据库刷新
    的头像 发表于 01-14 11:11 210次阅读
    适用于Oracle的Devart <b class='flag-5'>Excel</b>插件:轻松管理数据

    Spire.XLS for C++组件说明

    Spire.XLS for C++ 是一款专业的 C++ Excel 组件,可以用在各种 C++ 框架和应用程序中。Spire.XLS for C++ 提供了一个对象模型 Excel API,使
    的头像 发表于 01-14 09:40 254次阅读
    Spire.XLS for C++组件说明

    Devart Excel的附加组件

    Excel 的全部功能用于超过 25 种云应用程序和数据库。 - 将 Microsoft Excel 连接到任何所需数据源 - 同时处理多个数据源 - 使用 SQL 或集成的可视化查询生成器检索
    的头像 发表于 01-07 11:40 231次阅读

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

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

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

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

    记一次JSF异步调用引起的接口可用率降低

    前言 本文记录了由于JSF异步调用超时引起的接口可用率降低问题的排查过程,主要介绍了排查思路和JSF异步调用的流程,希望可以帮助大家了解JSF的异步调用原理以及提供一些问题排查思路。本
    的头像 发表于 08-05 13:40 336次阅读
    记一次JSF异步<b class='flag-5'>调用</b>引起的接口可用率降低

    python训练出的模型怎么调用

    在Python中,训练出的模型可以通过多种方式进行调用。 1. 模型保存与加载 在Python中,训练好的模型需要被保存,以便在其他程序或会话中使用。以下是一些常用的模型保存和加载方法。 1.1
    的头像 发表于 07-11 10:15 2615次阅读

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

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

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

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

    在CMD中调用spiffsgen可以正常工作生成bin,在pycharm调用不了spiffsgen怎么解决?

    spiffsgen.main() 这样执行后, 报错信息是 error: the following arguments are required: image_size, base_dir, output_file 在CMD中调用spiffsgen可以正常工作生
    发表于 06-20 06:53

    怎么用fatfs写excel

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

    微软网页版Excel新增复制粘贴功能,助力提升用户工作效率

    今日,微软公司宣布推出Microsoft 365Insider项目,面向会员开放网页版Excel的试用机会,旨在通过提升复制粘贴功能来提高用户生产效率。
    的头像 发表于 04-02 15:16 623次阅读