侵权投诉

Excel真的可以调用HFSS?

微波射频网 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

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

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

收藏 人收藏
分享:

评论

相关推荐

微软宣布Windows 11正式版将于10月开始推送

微软公司宣布Windows 11 正式版将于10 月5 号开始推送,微软公司将会首先为符合条件的新设....
的头像 lhl545545 发表于 09-19 09:01 278次 阅读

MSK调制解调器的matlab仿真

继续讲解程序!MSK也能进行相干解调?是的!同样是采用锁相环!先来看看MSK的优点,这是由于下面的这....
的头像 通信工程师专辑 发表于 09-18 11:43 102次 阅读
MSK调制解调器的matlab仿真

介绍3种方法跨时钟域处理方法

跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPGA初学者....
的头像 FPGA设计论坛 发表于 09-18 11:33 612次 阅读
介绍3种方法跨时钟域处理方法

机智云追踪外卖骑手保温箱硬件开发和项目演示

01 本章实现功能介绍 追踪外卖骑手的保温箱的GPS定位信息以及外卖箱是否被人打开,以防止骑手在送餐....
的头像 机智云开发者 发表于 09-18 11:03 103次 阅读

深入探究Linux系统噪音统计(osnoise tracer)

在Linux系统中作为一个普通线程是非常苦逼的。不仅NMI 、硬中断、软中断可以打断它,甚至其它普通....
的头像 Linux阅码场 发表于 09-18 10:53 143次 阅读
深入探究Linux系统噪音统计(osnoise tracer)

avr单片机INT0是如何去模拟代码的

avr单片机INT0是如何去模拟代码的?怎样去编写其代码?...
发表于 09-18 06:49 0次 阅读

三菱交流伺服系统伺服故障和报警代码

伺服故障和报警代码大全,超实用!使用三菱交流伺服系统主要由三个系列:MR-ES、MR-J2S、MR-J3。通常故障情况可由伺服...
发表于 09-17 08:54 0次 阅读

日经:华为领衔 中国6G专利申请占比逾四成 领先美日欧

日经与研究机构 Cyber Creative Institute 针对 2 万多件电信、量子技术、基....
的头像 章鹰 发表于 09-17 08:24 1970次 阅读
日经:华为领衔 中国6G专利申请占比逾四成 领先美日欧

如何利用51单片机制作从左至右再从右制作的流水灯呢

如何利用51单片机制作从左至右再从右制作的流水灯呢?如何编写其代码程序?...
发表于 09-17 06:52 0次 阅读

松下伺服报警代码保护功能

《松下伺服故障报警代码分析及处理》由会员分享,可在线阅读,更多相关《松下伺服故障报警代码分析及处理(2页珍藏版)》请在人人文...
发表于 09-17 06:20 0次 阅读

​开发板上玩GTA RISC-V多项移植项目成功运作中

电子发烧友网报道(文/周凯扬)RISC-V近期再度掀起了不小的热度,苹果招募RISC-V程序员负责其....
的头像 电子发烧友网 发表于 09-16 11:59 140次 阅读
​开发板上玩GTA RISC-V多项移植项目成功运作中

嵌入式开发中实用的宏打印函数

宏打印函数在我们的嵌入式开发中,使用printf打印一些信息是一种常用的调试手段。但是,在打印的信息....
的头像 FPGA之家 发表于 09-16 10:05 98次 阅读
嵌入式开发中实用的宏打印函数

使用Kotlin替代Java重构AOSP应用

两年前,Android 开源项目 (AOSP) 应用团队开始使用 Kotlin 替代 Java 重构....
的头像 谷歌开发者 发表于 09-16 09:26 101次 阅读
使用Kotlin替代Java重构AOSP应用

魔方网表,无代码开发平台NCDP的无冕之王

NCDP也就是No-code development platform,无代码开发平台,我第一次听到....
的头像 话说科技 发表于 09-15 14:34 83次 阅读

51单片机的启动文件作用是什么

在我们使用kei c51创建一个51单片机项目时,会有如下图所示的提示: 一般情况下,需要选择“是”....
的头像 嵌入式ARM 发表于 09-15 09:12 181次 阅读
51单片机的启动文件作用是什么

如何充分利用Heroku CI

ci/cd heroku 持续集成和持续交付(CI / CD)是当今软件工程开发过程中的最佳实践。  持续集成 (CI)允许开发人...
发表于 09-15 08:43 0次 阅读

代码生成有哪些用途

代码生成有许多用途:  我们可以从模式或现有信息源中生成重复代码。 例如,我们可以从数据库模式文件生成数据访问对象...
发表于 09-15 08:04 0次 阅读

3200故障代码服务器显示说明

3200故障代码 服务器显示 说 明AT400门机随机文件受控文件编号: AT400-OIM-ZH更 改 记 录序号更改文件号更 改 内 容 描...
发表于 09-15 07:51 0次 阅读

ros_control是怎样去控制真实电机的

ros_control是怎样去控制真实电机的?如何去编写其代码程序? ...
发表于 09-15 07:09 0次 阅读

力/力矩传感器的使用

1. 插件的添加在相应的标签内添加如下代码:                  3...
发表于 09-15 06:37 0次 阅读

实时监测手机是否接通电源

最近项目中遇到一个需求,实时监测手机是否接通电源,大概效果如下:怎么实现呢,第一想到的就是使用广播来进行监听,代码如下:...
发表于 09-14 08:43 0次 阅读

FastThreadLocal快在哪里

blog.csdn.net/mycs2012/article/details/90898128 1 ....
的头像 Android编程精选 发表于 09-13 09:17 132次 阅读

C++基础语法友元类和友元函数

本期是C++基础语法分享的第五节,今天给大家来分享一下: (1)explicit(显式)关键字; (....
的头像 C语言编程学习基地 发表于 09-12 09:52 190次 阅读

一条SQL语句是怎么被执行的

一直是想知道一条SQL语句是怎么被执行的,它执行的顺序是怎样的,然后查看总结各方资料,就有了下面这一....
的头像 Linux爱好者 发表于 09-12 09:44 168次 阅读
一条SQL语句是怎么被执行的

如何通过Python脚本实现WIFI密码的暴力破解

前言 本文将记录学习下如何通过 Python 脚本实现 WIFI 密码的暴力破解,从而实现免费蹭网。....
的头像 马哥Linux运维 发表于 09-10 17:09 323次 阅读
如何通过Python脚本实现WIFI密码的暴力破解

软件工程师为什么要写文档

在大多数软件工程师对编写、使用和维护代码的抱怨中,一个常见的问题是缺乏高质量的文档。缺乏文档有什么副....
的头像 Linux阅码场 发表于 09-09 11:26 249次 阅读

使用deepstream-test的范例代码修改车牌识别与遮盖

前一篇文章提到使用deepstream-test的范例代码,修改成“车牌识别”与“遮盖(redact....
的头像 NVIDIA英伟达企业解决方案 发表于 09-09 10:04 176次 阅读
使用deepstream-test的范例代码修改车牌识别与遮盖

在STM32G4片内不同存储空间运行的速度差异

最近有人问起程序在STM32G4片内不同存储空间运行的速度差异。说实在的,这个很难说死或说出个绝对的....
的头像 茶话MCU 发表于 09-09 09:57 235次 阅读
在STM32G4片内不同存储空间运行的速度差异

骑手保温箱追踪及温湿度监测4G设备接入机智云教程

01 前言 利用机智云提供的通用版App即使不懂云和App开发,也可以在不用写任何代码的情况下,轻松....
的头像 机智云开发者 发表于 09-09 09:16 147次 阅读
骑手保温箱追踪及温湿度监测4G设备接入机智云教程

windows11怎么退回windows10

windows11怎么退回windows10?
的头像 lhl545545 发表于 09-08 15:58 447次 阅读

windows11正式版推送时间

windows11正式版推送时间在今年的10月份,大版本更新的Windows 11目前已经进入商业测....
的头像 lhl545545 发表于 09-08 15:38 712次 阅读

Kitronik ARCADE游戏手柄实现连连看

连连看相信大家都玩过,但这个用Kitronik AR CADE游戏手柄来玩连连看的项目你相信是一个高....
的头像 电子森林 发表于 09-08 11:47 221次 阅读
Kitronik ARCADE游戏手柄实现连连看

如何把Docker Registry迁移到Harbor

“要如何将 docker registry 中的镜像迁移至 harbor?本文介绍了四种具体的思路和....
的头像 马哥Linux运维 发表于 09-07 16:29 300次 阅读
如何把Docker Registry迁移到Harbor

最为精简的一个Linux Fork炸弹解析

转自:http://blog.saymagic.cn/2015/03/25/fork-bomb.ht....
的头像 Linux爱好者 发表于 09-07 16:12 115次 阅读

使用Intellij IDEA的一些小技巧

https://blog.csdn.net/linsongbin1/article/details/....
的头像 Android编程精选 发表于 09-05 15:03 318次 阅读

内联汇编代码中的关键语法规则讲解

一、基本 asm 格式 1. 语法规则 2. test1.c 插入空指令 3. test2.c 操作....
的头像 硬件攻城狮 发表于 09-05 09:46 227次 阅读

微软将于本月22日推出Surface新品

微软公司将于本月22日即将举行关于Surface硬件秋季新品的发布会,届时将会一同发布微软公司主打的....
的头像 lhl545545 发表于 09-02 17:47 932次 阅读

C语言代码中的extern

在你的C语言代码中,不知能否看到类似下面的代码: 这好像没有什么问题,你应该还会想:“嗯⋯是啊,我们....
的头像 STM32嵌入式开发 发表于 09-02 15:13 205次 阅读
C语言代码中的extern

你们知道指针和引用正确的使用场景吗

先解决两个疑问 ◆ 指针和引用的不同之处是什么? ◆ 何时用用指针?何时用引用? 指针和引用的不同之....
的头像 STM32嵌入式开发 发表于 09-02 14:37 180次 阅读
你们知道指针和引用正确的使用场景吗

Vivado调用Questa Sim或ModelSim仿真小技巧

Vivado调用Questa Sim或ModelSim仿真中存在的一些自动化问题的解决方案。 Viv....
的头像 FPGA之家 发表于 09-02 10:12 203次 阅读
Vivado调用Questa Sim或ModelSim仿真小技巧

比Arduino更简单易用的开发套件ShineBlink

Hi 机友们,我想向你推荐一个小而美的产品,一个比Arduino更简单易用的开发套件——ShineB....
的头像 机智云物联网 发表于 09-02 10:04 578次 阅读

Go编译器已默认启用-G=3支持泛型

Go 项目代码仓库昨日提交和合并的一个 PR 显示,Go 语言已在 cmd/compile 中默认启....
的头像 马哥Linux运维 发表于 09-01 15:52 1210次 阅读
Go编译器已默认启用-G=3支持泛型

分享一个最新的的Python对象序列化方式

许多Python标准库都有一些未被赏识的精华。其中之一是允许简单优雅的基于参数类型的函数分发。这一特....
的头像 马哥Linux运维 发表于 09-01 15:19 674次 阅读
分享一个最新的的Python对象序列化方式

Go常用的加密算法详细解读

【导读】本文介绍了常用的加密算法,并对这些加密算法结合实际 golang 代码段进行了详细解读。 前....
的头像 开关电源芯片 发表于 09-01 14:47 127次 阅读

一文透析Nginx-ingress 控制器如何实现的

主机nginx 一般nginx做主机反向代理(网关)有以下配置 upstream order{ se....
的头像 Linux爱好者 发表于 09-01 14:44 869次 阅读
一文透析Nginx-ingress 控制器如何实现的

代码中是数学图像解法和贪心解法

今天讲一个贪心的老司机的故事,就是力扣第 134 题「加油站」: 题目应该不难理解,就是每到达一个站....
的头像 新材料在线 发表于 09-01 14:14 197次 阅读
代码中是数学图像解法和贪心解法

如何才能够翻转二叉树

这道题目是非常经典的题目,也是比较简单的题目(至少一看就会)。 但正是因为这道题太简单,一看就会,一....
的头像 新材料在线 发表于 09-01 11:45 221次 阅读

Python 代码加速运行的的小技巧

Python 是一种脚本语言,相比 C/C++ 这样的编译语言,在效率和性能方面存在一些不足。但是,....
的头像 Android编程精选 发表于 09-01 11:28 245次 阅读

K8S集群服务访问失败怎么办 K8S故障处理集锦

问题1:K8S集群服务访问失败?     原因分析:证书不能被识别,其原因为:自定义证书,过期等。 ....
的头像 开关电源芯片 发表于 09-01 11:11 248次 阅读
K8S集群服务访问失败怎么办 K8S故障处理集锦

ADI-blackfin-PPI驱动TFT屏的代码-TFT-Init

ADI-blackfin-PPI驱动TFT屏的代码-TFT-Init(电源技术投稿模版)-ADI-b....
发表于 08-31 11:28 22次 阅读
ADI-blackfin-PPI驱动TFT屏的代码-TFT-Init

AComparisonofAnsoftHFSSandCSTMicrowaveStudio

AComparisonofAnsoftHFSSandCSTMicrowaveStudio(新型电源技....
发表于 08-31 10:50 12次 阅读
AComparisonofAnsoftHFSSandCSTMicrowaveStudio

C语言冒泡排序工程代码汇总

C语言冒泡排序工程代码汇总
发表于 08-30 11:06 24次 阅读

HFSS-API常用的基本形状和布尔操作函数

摘要: 上节HFSS-API入门第一弹:画个Box主要是分享了调用改良hfssapi新建工程和设计文....
的头像 知社学术圈 发表于 08-27 15:38 153次 阅读

天线的HFSS和CST仿真介绍与对比

摘要: 目前常用的电磁仿真软件有HFSS、CST、FEKO等,HFSS软件仿真电小物体相对而言要比C....
的头像 知社学术圈 发表于 08-27 15:14 1493次 阅读

为什么有时候会写出烂代码

本文的内容是最近我刚刚遇到的一个问题,问题代码是我自己写的,也是我自己写单元测试的时候发现的,也是我....
的头像 深圳东裕光大 发表于 08-27 10:23 244次 阅读
为什么有时候会写出烂代码

软件工程师加入新开发团队时需要思考的问题

‍‍ 作者 | Thomas Stringer 译者 | 弯月 出品 | CSDN(ID:CSDNn....
的头像 深圳东裕光大 发表于 08-27 10:14 238次 阅读

主流编程开发工具分享介绍

俗话说的好:工欲善其事,必先利其器。一款好的开发工具对程序员来说是至关重要的,可以降低开发成本、提高....
的头像 深圳东裕光大 发表于 08-27 10:09 248次 阅读

四个方面全面解析Linux 下 C++ 编译&链接

【导读】:编译与链接对CC++程序员既熟悉又陌生,熟悉在于每份代码都要经历编译与链接过程,陌生在于大....
的头像 开关电源芯片 发表于 08-27 09:36 2803次 阅读
四个方面全面解析Linux 下 C++ 编译&链接

怎么样才能让Java代码编写更规范化

作者 | 涛姐涛哥 链接 | cnblogs.com/taojietaoge/p/11575376.....
的头像 Android编程精选 发表于 08-27 09:31 1251次 阅读

如何测量ARM Cortex-M MCU代码的执行时间

在许多实时应用中,如电机控制、发动机控制、无线通信等时间敏感的应用,CPU可能花费不到5%的时间执行....
的头像 奈因PCB电路板设计 发表于 08-26 09:20 323次 阅读
如何测量ARM Cortex-M MCU代码的执行时间