HFSS学习笔记利用MATLAB脚本进行HFSS快速建模

Posted 唯_ww

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HFSS学习笔记利用MATLAB脚本进行HFSS快速建模相关的知识,希望对你有一定的参考价值。

HFSS学习笔记(四)利用MATLAB脚本进行HFSS快速建模

在HFSS中,我们经常会遇到复杂且重复的模型,比如你要画30个不同的矩形块,每个矩形块都有自己的参数比如,a1,a2,…,a30,那么此时你就要重复建立30个模型,这样的话,耗费时间且效率低,因此,使用HFSS的脚本功能,利用代码的循环功能,来实现快速建模。

一、HFSS脚本录制

1.打开HFSS,点击上方Tools->Record Script to File,HFSS开始记录你的操作,并将你的操作转换为代码(有点类似录像的意思)

保存成vbs格式(将你的操作记录保存成相应的文件)

2.建立了一个长为ax11,宽为w的长条

3.停止记录

4.用打开记事本的方式打开你保存的vbs文件,查看代码

Dim oAnsoftApp
Dim oDesktop
Dim oProject
Dim oDesign
Dim oEditor
Dim oModule
Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")
Set oDesktop = oAnsoftApp.GetAppDesktop()
oDesktop.RestoreWindow
Set oProject = oDesktop.SetActiveProject("cucao_unit_impedace_ay=7_number=5")
Set oDesign = oProject.SetActiveDesign("13_jiaoben")
Set oEditor = oDesign.SetActiveEditor("3D Modeler")
oEditor.CreateRectangle Array("NAME:RectangleParameters", "IsCovered:=", true, "XStart:=",  _
  "-ax11/2", "YStart:=", "-w/2", "ZStart:=", "h", "Width:=", "ax11", "Height:=",  _
  "w", "WhichAxis:=", "Z"), Array("NAME:Attributes", "Name:=", "Rectangle9", "Flags:=",  _
  "", "Color:=", "(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=",  _
  "Global", "UDMId:=", "", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=",  _
  "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "IsMaterialEditable:=",  _
  true, "UseMaterialAppearance:=", false, "IsLightweight:=", false)

5.以上操作相当于有了一个模板,依据以上模板可以修改各种值。

二、MATLAB复现

1.首先用matlab复现以上功能-即建立一个长为ax11,宽为w的长条。
该段matlab代码主要功能是:
(1)创建一个txt文件
(2)用fprintf()功能将vbs文件中的代码打印到目标txt文件中

clc;clear;close all;
fid = fopen('ax-model3.txt', 'wt');%会在当前文件夹下生成ax-model3.txt文件

fprintf(fid, 'Dim oAnsoftApp\\n');
fprintf(fid, 'Dim oDesktop\\n');
fprintf(fid, 'Dim oProject\\n');
fprintf(fid, 'Dim oDesign\\n');
fprintf(fid, 'Dim oEditor\\n');
fprintf(fid, 'Dim oModule\\n');
fprintf(fid,'Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")\\n')
fprintf(fid,'Set oDesktop = oAnsoftApp.GetAppDesktop()\\n')
fprintf(fid,'oDesktop.RestoreWindow\\n')
fprintf(fid,'Set oProject = oDesktop.SetActiveProject("cucao_unit_impedace_ay=7_number=5")\\n')
fprintf(fid,'Set oDesign = oProject.SetActiveDesign("13_jiaoben")\\n')
fprintf(fid,'Set oEditor = oDesign.SetActiveEditor("3D Modeler")\\n')


fprintf(fid,'oEditor.CreateRectangle Array("NAME:RectangleParameters", "IsCovered:=", true, "XStart:=",  _\\n')
fprintf(fid,'  "-ax11/2", "YStart:=", "-w/2", "ZStart:=", "h", "Width:=", "ax11", "Height:=",  _\\n')
fprintf(fid,'  "w", "WhichAxis:=", "Z"), Array("NAME:Attributes", "Name:=", "Rectangle9", "Flags:=",  _\\n')
fprintf(fid,'  "", "Color:=", "(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=",  _\\n')
fprintf(fid,'  "Global", "UDMId:=", "", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=",  _\\n')
fprintf(fid,'  "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "IsMaterialEditable:=",  _\\n')
fprintf(fid,'  true, "UseMaterialAppearance:=", false, "IsLightweight:=", false)\\n')

fclose(fid);

2.将生成的ax-model3.txt文件修改为ax-model3.vbs文件,修改很简单,直接重命名,将后缀.txt改成.vbs即可
3.打开HFSS,运行我们生成的ax-model3.vbs脚本

4.生成相应的长条

三、MATLAB实现循环建模

1.首先,因为每个长条尺寸不同,我们要先建立好每个长条对应的变量ax,这一步也可以用脚本来去建立
2.然后就是循环建模,代码如下

clc;clear;close all;
fid = fopen('ax-model4.txt', 'wt');%会在当前文件夹下生成ax-model4.txt文件

fprintf(fid, 'Dim oAnsoftApp\\n');
fprintf(fid, 'Dim oDesktop\\n');
fprintf(fid, 'Dim oProject\\n');
fprintf(fid, 'Dim oDesign\\n');
fprintf(fid, 'Dim oEditor\\n');
fprintf(fid, 'Dim oModule\\n');
fprintf(fid,'Set oAnsoftApp = CreateObject("Ansoft.ElectronicsDesktop")\\n')
fprintf(fid,'Set oDesktop = oAnsoftApp.GetAppDesktop()\\n')
fprintf(fid,'oDesktop.RestoreWindow\\n')
fprintf(fid,'Set oProject = oDesktop.SetActiveProject("cucao_unit_impedace_ay=7_number=5")\\n')
fprintf(fid,'Set oDesign = oProject.SetActiveDesign("13_jiaoben")\\n')

str = ["ax11" "ax12" "ax13" "ax14" "ax15" "ax21" "ax22" "ax23" "ax24" "ax25" "ax31" "ax32" "ax33" "ax34" "ax35" "ax41" "ax42" "ax43" "ax44" "ax45" "ax51" "ax52" "ax53" "ax54" "ax55"]

%先要建立所有变量
for ax = ["ax11" "ax12" "ax13" "ax14" "ax15" "ax21" "ax22" "ax23" "ax24" "ax25" "ax31" "ax32" "ax33" "ax34" "ax35" "ax41" "ax42" "ax43" "ax44" "ax45" "ax51" "ax52" "ax53" "ax54" "ax55"]

fprintf(fid,'oDesign.ChangeProperty Array("NAME:AllTabs", Array("NAME:LocalVariableTab", Array("NAME:PropServers",  _\\n')
fprintf(fid,'  "LocalVariables"), Array("NAME:NewProps", Array("NAME:%s", "PropType:=", "VariableProp", "UserDef:=",  _\\n',ax)
fprintf(fid,'  true, "Value:=", "8mm"))))\\n')

end

%开始3D建模
fprintf(fid,'Set oEditor = oDesign.SetActiveEditor("3D Modeler")\\n')

for ax = ["ax11" "ax12" "ax13" "ax14" "ax15" "ax21" "ax22" "ax23" "ax24" "ax25" "ax31" "ax32" "ax33" "ax34" "ax35" "ax41" "ax42" "ax43" "ax44" "ax45" "ax51" "ax52" "ax53" "ax54" "ax55"]
    
fprintf(fid,'oEditor.CreateRectangle Array("NAME:RectangleParameters", "IsCovered:=", true, "XStart:=",  _\\n')
fprintf(fid,'  "-%s/2", "YStart:=", "-w/2", "ZStart:=", "h", "Width:=", "%s", "Height:=",  _\\n',ax,ax)
fprintf(fid,'  "w", "WhichAxis:=", "Z"), Array("NAME:Attributes", "Name:=", "%s", "Flags:=",  _\\n',ax)
fprintf(fid,'  "", "Color:=", "(143 175 143)", "Transparency:=", 0, "PartCoordinateSystem:=",  _\\n')
fprintf(fid,'  "Global", "UDMId:=", "", "MaterialValue:=", "" & Chr(34) & "vacuum" & Chr(34) & "", "SurfaceMaterialValue:=",  _\\n')
fprintf(fid,'  "" & Chr(34) & "" & Chr(34) & "", "SolveInside:=", true, "IsMaterialEditable:=",  _\\n')
fprintf(fid,'  true, "UseMaterialAppearance:=", false, "IsLightweight:=", false)\\n')

end
fclose(fid);

3.将生成的txt文件修改为vbs文件,然后在hfss中运行
4.建模的效果如下

5.因为在创建变量的时候,每个变量的值都是一样的,所以,可以根据自己的参数在左栏的properties中进行修改

以上是关于HFSS学习笔记利用MATLAB脚本进行HFSS快速建模的主要内容,如果未能解决你的问题,请参考以下文章

HFSS学习笔记利用MATLAB脚本进行HFSS快速建模

学个Antenna:利用HFSS-API设计指数渐变传输线

低副瓣阵列天线综合2 matlab HFSS

HFSS学习笔记如何由封闭曲线生成金属面

HFSS学习笔记如何由封闭曲线生成金属面

HFSS学习笔记报错总结