摘要:
今天我们正式拉开HFSS-API入门的帷幕,欢迎小伙伴们阅读、分享、再看,转发给更多有需要的人!本次推文将教大家利用MATLAB调用本人改良后的HFSS-API包,编写调用HFSS的vbs脚本,文内有用法注释。
本文使用的软件为MATLAB2019a和AnsysEM 18.2
入门级函数
大家可以先拉到文末,下载改良后的hfssapi。建议收藏链接,后续新出的函数会不定期在该文件夹内更新。文件也不大,几百kB,每次有更新重新下载覆盖即可。
使用前须知:如果MATLAB已安装了其他版的hfssapi,建议先将其移除出Set Path中的路径,然后选择改良后的hfssapi将其Add with Subfolders。
或者将编写的MATLAB生成vbs脚本 的.m文件与hfssapi-by-Jianhui Huang放在同一个总文件夹内。(初学者建议采用此方法)
然后通过下面的MATLAB代码实现路径的添加。
path = mfilename('fullpath');
i=strfind(path,'\');
path=path(1:i(end));
cd(path);
addpath(genpath(strcat(path,'hfssapi-by-Jianhui Huang')));
至于vbs脚本文件进行代码的写入可以使用MATLAB自带的fopen函数 :
| % 创建一个可读写vbs脚本文件. % tmpScriptFile:vbs脚本的路径,例如F:\test\a.vbs fid = fopen(tmpScriptFile, 'wt'); |
接下来介绍3个基本函数及其用法:hfssNewProject,hfssInsertDesign,hfssSaveProject。
| %创建一个新的HFSS项目 %fid:新建vbs脚本的一个文件标识符 hfssNewProject(fid) |
| %插入一个新的设计文件 %Design_name:设计名称 hfssInsertDesign(fid, Design_name); |
| %保存项目文件到指定路径 %tmpPrjFile:vbs脚本的路径, %例如F:\test\Helloworld.aedt或者F:\test\Helloworld.hfss %Overwrite:如果设置为1将覆盖与tmpPrjFile指定的名称相同的任何现存文件 %缺省或者为0则默认不覆盖 hfssSaveProject(fid, tmpPrjFile,Overwrite); |
画个参数化 的Box
接下来两个函数分别用来变量建立和画Box的:hfssVariableInsert,hfssBox。
| % DesignName:设计名称;variableName:变量名字 % value:变量的值;units:单位; % flag:值为1时value只支持数字,值为2时value支持表达式 hfssVariableInsert(fid,DesignName,variableName, value, units,flag) |
| % hfssBox(fid, BoxName, Start, Size, Units, Color, Material, Transparency, flag) % BoxName:Box的名字;Start:初始点(基点)坐标;Size:沿着x,y,z轴的尺寸;Units:单位 % Color:Box的颜色(RGB);Material:材料名字(不要随便自己整个名字,必须是HFSS材料库里的名字); % Transparency:显示的透明度;flag:值为1时Start, Size只支持向量 数字,值为2时value支持元胞数组 表达式% 实例: % hfssBox(fid, 'Sub1', [0,0,0], [1,2,3], 'mm',... % "(132 132 193)", "FR4_epoxy", 0, 1); % hfssBox(fid, 'Sub1', {'0mm', '0mm', '0mm'}, {'Box_W', 'Box_L', 'Box_H'}, 'mm',... % "(132 132 193)", "FR4_epoxy", 0, 2); |
对于RGB三色的选取,可以在Color里面自己根据自己喜好挑选,并记录下RGB三色数值。
不过对于笔者而言,通常将HFSS模型按下图统一进行配色。
基板Material名字在HFSS材料库里面找到,然后复制Material Name就行。
到此为止,这5个函数足以让我们在编写vbs脚本,实现在HFSS中任意画参量化的Box了。
clear;clc;
path = mfilename('fullpath');
i=strfind(path,'\');
path=path(1:i(end));
cd(path);
addpath(genpath(strcat(path,'hfssapi-by-Jianhui Huang')));
try
% 填写路径
% tmpPrjFile:生成的aedt或者hfss(安装hfss15以下的后缀名为.hfss)项目文件的路径名
% tmpScriptFile:生成的vbs脚本文件的路径名
tmpPrjFile = 'F:\vbsScript\First_demo.aedt';
tmpScriptFile = 'F:\vbsScript\Helloworld.vbs';
% hfssExePath:HFSS软件的路径
hfssExePath = 'https://www.gofarlic.com\software\HFSS15\AnsysEM18.2\Win64\ansysedt.exe';
% 创建一个可读写vbs脚本文件.
fid = fopen(tmpScriptFile, 'wt');
%创建一个新的HFSS项目并插入一个新的设计文件.
hfssNewProject(fid);
Design_name='Draw_a_box';
hfssInsertDesign(fid, Design_name);
Box_H=1;Box_W=2;Box_L=3;
% hfssVariableInsert(fid,DesignName,variableName, value, units,flag)
hfssVariableInsert(fid,Design_name,'Box_H', Box_H, 'mm',1);
hfssVariableInsert(fid,Design_name,'Box_W', Box_W, 'mm',1);
hfssVariableInsert(fid,Design_name,'Box_L', 'Box_H+Box_W', 'mm',2);
% 画一个Box
% hfssBox(fid, BoxName, Start, Size, Units, Color, Material, Transparency, flag)
hfssBox(fid, 'Sub1', {'0mm', '0mm', '0mm'}, {'Box_W', 'Box_L', 'Box_H'}, 'mm',...
"(132 132 193)", "FR4_epoxy", 0, 2);
% hfssBox(fid, 'Sub1', [0,0,0], [1,2,3], 'mm',...
% "(132 132 193)", "FR4_epoxy", 0, 1);
% 保存项目文件到指定路径
hfssSaveProject(fid, tmpPrjFile,1);
% Close the HFSS Script File.
fclose(fid);
disp('vbs脚本已生成!');
catch
disp('程序出现异常!');
fclose(fid);
end
按个人情况修改tmpPrjFile,tmpScriptFile ,hfssExePath这几个路径和Design_name,将编写的MATLAB生成vbs脚本的.m文件与下载的hfssapi-by-Jianhui Huang放在同一个总文件夹内,点击运行即可生成vbs脚本(在自行赋值的tmpScriptFile的这个路径下)。vbs脚本可以直接点击运行,或者在HFSS软件中Run
Script。
基础性地写代码编注释还是挺费时间和精力的,希望大家多点赞分享。
代码分享区
hfssapi-by-Jianhui Huang
下载链接(后续代码持续在下面链接更新):射频问问原文末尾自取
来源:HFSS-API入门第一弹:画个Box - RFASK射频问问
代码已封装好打包为p文件不可修改,每次重新下载覆盖,按函数注释进行掉包即可!
注释事项:MATLAB生成vbs脚本的.m文件与hfssapi-by-Jianhui Huang放在同一个总文件夹内。不要再examples文件夹内运行.m文件!
作者:微波天线工程师
应读者朋友们对这个系列文章的喜爱,也为了能够让老师更系统更全面地介绍MATLAB-HFSS-API相关知识,现推出该系列课程,共25课时,欢迎大家加入课程学习!https://www.rfask.net/kc/v/41.html
关于RFASK射频问问
射频问问 (http://RFASK.NET) 是在"微波射频网 (http://MWRF.NET)”系列原创技术专栏基础上升级打造的技术问答学习平台,主要围绕射频芯片 、微波电路、天线、雷达、卫星等相关技术领域,致力于为无线通信 、微波射频、天线、雷达等行业的工程师,提供优质、原创的技术问答、专栏文章、射频课程等学习内容。更多请访问:http://www.rfask.net