- 积分
- 449
- 回帖
- 0
- 西莫币
-
- 贡献
-
- 威望
-
- 存款
-
- 阅读权限
- 20
- 最后登录
- 1970-1-1
该用户从未签到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 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=[tmpstr,newline,str]; %#ok<AGROW>
- end
- else
- if isempty(tmpstr)
- newstr=[newstr,newline,fun(str)]; %#ok<AGROW>
- else
- tmpstr=[tmpstr,newline,str]; %#ok<AGROW>
- newstr=[newstr,newline,fun(tmpstr)]; %#ok<AGROW>
- end
- end
- end
- end
- newstr=[newstr,newline];
- fclose(fpn);
- function str=fun(str)
- str=strrep(str,'"" & Chr(34) & "vacuum" & Chr(34) & ""','"vacuum"');
- for ii=1:20
- expr='Array\(.+\)(?!")';
- [startIndex,endIndex] =regexp(str,expr);
- if isempty(startIndex)
- break
- end
- str=[str(1:startIndex-1),'{',str(startIndex+6:endIndex-1),'}',str(endIndex+1:end)];
- end
- str=strrep(str,'), Array(','},{');
- str=strrep(str,'"','''');
- str=strrep(str,' _','...');
- [iind,dind]=regexp(str,'''MaterialValue:='', ''\w*''');
- if ~isempty(iind)
- str=[str(1:iind-1),'''MaterialValue:='',''"',str(iind+20:dind-1),'"''',str(dind+2:end)];
- end
- if strcmp(str(1:4),'Set ')
- str=str(5:end);
- end
- [startIndex,~] =regexp(str,'\w*(\.)\w* {.*}');
- if ~isempty(startIndex)
- expr='{.+}';
- [startIndex,endIndex] =regexp(str,expr);
- str=[str(1:startIndex-2),'({',str(startIndex+1:endIndex-1),'})',str(endIndex+1:end)];
- end
- if ~strcmp(str(end-2:end),'...')
- str=[str,';'];
- end
复制代码 |
|