利用HFSS记录脚本的功能可以将HFSS的绘图过程以程序的方式记录下来,采用matlab对其进行修改,可用于大规模重复阵列的绘制。这里针对程序控制HFSS画不规则阵列的过程做简要的记录。
1,记录绘图过程
在HFSS的Tools下找到record script to file,将文件保存为vbs格式(该格式可用记事本打开)。点击后进行绘图操作,完成绘图操作后,在tools下选择 stop record,停止记录。
2,根据需求改写程序
在这里为了能够实现绘制尺寸变化的阵列的需求,利用matlab自带的num2str()函数来实现这个功能,该函数可以实现数字转字符的功能,结合循环,即可实现绘制尺寸变化的阵列的需求。基于上一步骤记录的程序,在matlab中引入循环。
为了实现图一所示的图形,编写matlab函数 如下:
clear;close all;clc
fid=fopen('MatlabControlHFSS_geometrydeform.txt','wt');
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("Project1")\n');
fprintf(fid,'Set oDesign = oProject.SetActiveDesign("HFSSDesign1")\n');
p0=2;%period
a0=1;%width of pitch
W0=8*p0;
fprintf(fid,['oDesign.ChangeProperty Array("NAME:AllTabs", Array("NAME:LocalVariableTab", Array("NAME:PropServers", "LocalVariables"), Array("NAME:NewProps", Array("NAME:a", "PropType:=", "VariableProp", "UserDef:=", true, "Value:=", "',num2str(a0),'um"), Array("NAME:p", "PropType:=", "VariableProp", "UserDef:=", true, "Value:=", "',num2str(p0),'um"), Array("NAME:W", "PropType:=", "VariableProp", "UserDef:=", true, "Value:=", "',num2str(W0),'um"))))\n']);
for i=1:7
A=ceil(W0*sin(2*pi/2/(5*p0)*i));
fprintf(fid,'Set oEditor = oDesign.SetActiveEditor("3D Modeler")\n');
fprintf(fid,['oEditor.CreateRectangle Array("NAME:RectangleParameters", "IsCovered:=", true, "XStart:=", "0mm", "YStart:=", "',num2str((i-1)*p0),'um", "ZStart:=", "0mm", "Width:=", "0.7um", "Height:=", "0.2um", "WhichAxis:=", "Z"), Array("NAME:Attributes", "Name:=", "Rectangle',num2str(i),'", "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)\n']);
fprintf(fid,['oEditor.ChangeProperty Array("NAME:AllTabs", Array("NAME:Geometry3DAttributeTab", Array("NAME:PropServers", "Rectangle',num2str(i),'"), Array("NAME:ChangedProps", Array("NAME:Name", "Value:=", "pitch',num2str(i),'"))))\n']);
fprintf(fid,['oEditor.ChangeProperty Array("NAME:AllTabs", Array("NAME:Geometry3DCmdTab", Array("NAME:PropServers", "pitch',num2str(i),':CreateRectangle:1"), Array("NAME:ChangedProps", Array("NAME:YSize", "Value:=", "a"), Array("NAME:XSize", "Value:=", "',num2str(A),'um"))))\n']);
end
fclose(fid);
3,图形绘制
将生成的txt文件另存为vbs格式,之后新建HFSS工程文件,在tools下找到run script,找到对应文件即可绘制图一所示的尺寸变化的阵列。
该解决过程借鉴了CSDN文章:HFSS学习笔记(四)利用MATLAB脚本进行HFSS快速建模_唯_ww的博客-CSDN博客,在这里对作者表示感谢。