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

    文章

    6803

    浏览量

    108820
  • VBA
    VBA
    +关注

    关注

    0

    文章

    22

    浏览量

    12374
  • 代码
    +关注

    关注

    30

    文章

    5024

    浏览量

    75979
  • hfss
    +关注

    关注

    33

    文章

    169

    浏览量

    52115
  • 求解器
    +关注

    关注

    0

    文章

    90

    浏览量

    5067

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何用FOR调用FB时 ,调试能正常设置调用环境

    FOR调用100次同一个多重背景FB块后,在线调试设置调用环境时对话框里面并没有展开,无法选中是哪一个循环调用,如果不用FOR调用, 直接把调用
    发表于 08-10 06:24

    HFSS VS CST:天线工程师该如何选择?

    在天线工程师的职场生涯中,挑选一款合适的电磁仿真软件显得尤为关键。HFSS与CST (CST Studio Suite),作为业界备受推崇的电磁仿真软件,各自拥有独特的优势和应用范畴。本文将对这两款软件展开深入剖析,旨在为天线工程师在职业生涯中做出明智的软件选择提供有力指导。
    的头像 发表于 07-30 11:29 155次阅读
    <b class='flag-5'>HFSS</b> VS CST:天线工程师该如何选择?

    MK-Excel VBA编程与ChatGPT自动化实战-宏录制/条件判断

    从宏录制到代码优化:ChatGPT赋能Excel VBA自动化实战全攻略 在当今高度数字化的商业环境中,数据处理的效率直接决定了企业的运营成本和决策速度。然而,无数职场人依然深陷于繁琐、重复
    的头像 发表于 06-03 11:10 2595次阅读

    【「玩转高速电路:基于ANSYS HFSS的无源仿真实例」阅读体验】+基础篇

    ANSYS HFSS是一种高速电路的仿真软件,说实话,以前没使用过,正好趁此机会来学习下。 首先来看看高速信号的基础知识。 一、信号完整性 信号完整性是研究信号在传输路径中如何保持原始特性的能力,以
    发表于 01-16 13:12

    勤哲Excel服务器:移动办公的革新利器,显著提升企业协作效率

    随着手机、平板等移动设备的普及,众多企业开始逐步进入移动办公时代——在任何时间、任何地点,都可以高效处理工作,完全打破传统固定办公地点束缚,让工作更自由、协作更无界。 作为全球Excel服务器品类
    的头像 发表于 12-16 15:58 998次阅读

    HFSS仿真铌酸锂电光调制器T型电极损耗较大

    HFSS仿真铌酸锂电光调制器T型电极时,尽管电极设为了完美电导体,介质的介质损耗角正切设为0,dB(S21)仍然有比较大的损耗,导致用ABCD矩阵计算时损耗较大,这是什么原因引起的,如何解决?
    发表于 12-16 14:36

    Rakuten API 接口调用:从准备到落地的实操指南

    一、调用前的三大核心准备​ 在发起 Rakuten API 调用前,需完成基础环境搭建与权限配置,这是确保调用成功的基础。​ 1. 开发者账号与应用创建​ 首先需登录 Rakuten
    的头像 发表于 11-25 17:21 1459次阅读

    Jumia API 调用:覆盖非洲市场的实操指南

    一、调用前的四大核心准备(适配 Jumia 地区特性)​ Jumia API 的调用准备需围绕 “地区差异化” 展开,这是区别于其他电商 API 的关键前提。​ 1. 开发者账号与 API Key
    的头像 发表于 11-25 17:12 1536次阅读

    捷智算重大更新|API接口全面开放,算力调用更高效

    人工调度算力太耗时?业务系统对接总卡壳?捷智算重磅升级——算力租赁平台API接口正式开放,让算力调用高效又灵活!无论是AI训练的动态算力需求,还是HPC仿真的大规模并行计算,API接口都能精准匹配
    的头像 发表于 11-21 18:41 1456次阅读
    捷智算重大更新|API接口全面开放,算力<b class='flag-5'>调用</b>更高效

    控制流和函数调用的精细调整

    循环条件也能提升效率。将循环条件中的复杂计算提前到循环前进行计算,然后用结果作为循环条件,可以减少每次迭代的计算量。 条件判断的顺序也对性能有影响。将最有可能为真的条件放在前面,可以利用逻辑操作的短路
    发表于 11-14 06:32

    调用拼多多开放平台 API 获取店铺列表

    pdd.mall.info.list.get (或类似名称,具体名称请以官方文档为准) 接口用于查询店铺列表。开发者可以通过此接口获取授权店铺的基本信息。 主要功能: 查询当前授权账号下的店铺列表。 获取店铺的核心信息,如店铺 ID、店铺名称、店铺 Logo 等。 2. 调用
    的头像 发表于 11-10 15:30 1579次阅读
    <b class='flag-5'>调用</b>拼多多开放平台 API 获取店铺列表

    【书籍评测活动NO.66】玩转高速电路:基于ANSYS HFSS的无源仿真实例

    了仿真参数设置对仿真结果的影响。读者可以再熟悉HFSS操作的同时体会无源仿真的思路,为自己设计高速电路打下基础。 《玩转高速电路:基于ANSYS HFSS的无源仿真实例》适合对高速电路
    发表于 11-06 14:19

    深入了解系统调用API:探索操作系统底层的关键接口

    ,也无法使用内核函数。当用户进程必须访问内核或使用某个内核函数时,就得使用系统调用(System Call)。在Linux中,系统调用是用户空间访问内核空间的唯一途径。 什么是系统调用? 答:系统
    的头像 发表于 11-03 09:20 1199次阅读

    Python调用API教程

    使用Requests库实现。该库可以轻松地发送HTTP请求并接收响应结果。以下是一个使用Requests库调用API的示例代码: import requests ur
    的头像 发表于 11-03 09:15 1600次阅读

    鸿蒙是否存在可以调用中断的API。

    当前想要测试一下高精度定时器中断响应时间,没有找到相关的API,或者是否存在API可以调用其他中断?
    发表于 11-01 11:13