将Maxwell VBS代码转化成MATLAB代码
本帖最后由 zongshideshui 于 2018-6-11 17:28 编辑使用脚本语言控制Maxwell进行仿真,可以实现MAXWELL全自动化,如:
https://bbs.simol.cn/thread-28895-1-1.html
但Maxwell自身支持的脚本语言是VBS,因此写了个matlab工具,能将常见的命令转换成Matlab代码,分享给有需要的人
(1)MAXWELL vbs代码用宏录制
(2)MAXWELL版本:16
(3)Matlab版本:2018
function newstr=MaxwellVBS2Matlab(f)
% 用法:MaxwellVBS2Matlab('E:\dd.vbs')
fpn = fopen (f, 'rt');
newstr='';
tmpstr='';
while feof(fpn) ~= 1
str = fgetl(fpn);
str=strtrim(str);
if ~strcmp(str(1),'''') && ~strcmp(str(1:4),'Dim ') && ~isempty(str)
if strcmp(str(end),'_')
if isempty(tmpstr)
tmpstr=str;
else
tmpstr=; %#ok<AGROW>
end
else
if isempty(tmpstr)
newstr=; %#ok<AGROW>
else
tmpstr=; %#ok<AGROW>
newstr=; %#ok<AGROW>
end
end
end
end
newstr=;
fclose(fpn);
function str=fun(str)
str=strrep(str,'"" & Chr(34) & "vacuum" & Chr(34) & ""','"vacuum"');
for ii=1:20
expr='Array\(.+\)(?!")';
=regexp(str,expr);
if isempty(startIndex)
break
end
str=;
end
str=strrep(str,'), Array(','},{');
str=strrep(str,'"','''');
str=strrep(str,' _','...');
=regexp(str,'''MaterialValue:='', ''\w*''');
if ~isempty(iind)
str=;
end
if strcmp(str(1:4),'Set ')
str=str(5:end);
end
=regexp(str,'\w*(\.)\w* {.*}');
if ~isempty(startIndex)
expr='{.+}';
=regexp(str,expr);
str=;
end
if ~strcmp(str(end-2:end),'...')
str=;
end 楼主 想询问一下 你对照转换是否有些文件可以参考目前我也遇到此转换问题。 zhangxx49 发表于 2018-6-25 11:47
楼主 想询问一下 你对照转换是否有些文件可以参考目前我也遇到此转换问题。
没有。Maxwell VBS宏的语法可以看里的帮助文件,其他无。
代码转换是2种语言语法的变换,如果对二者的语法足够了解,就能知道如何转换。
"..."→'...'
Array(...)→{...}
&→[...]
...... 楼主,你写的将Maxwell VBS代码转化成MATLAB代码 的程序?具体怎么用? 感谢楼主分享,请问能否提供新版转换代码,谢谢。上面代码执行后,转换的代码挺多错误。 感谢分享原创经验
页:
[1]