情节命令将waitbar转换为图

7视图(30天)
我决定waitbar添加到函数调用app。这个函数需要在多个用户参数,并覆盖一块预先存在的人物。waitbar添加到其他类似的功能(那些补丁命令)的图纸没有问题,但是在这个情节的一个绘图命令,它实际上waitbar文本内的图,然后造成了事故当它试图更新waitbar。waitbar是 转换 成图。我如何停止plot命令针对waitbar ?
谢谢你!
函数[ScriptReturned] = appT3annotateUnitShape (X, Y, grainIds、ScaleFactor GSscale, LineWdth, LineColour, FillFace, FillColour,谷物,GrainsVarName)
% ANNOTATEUNITSHAPE吸引一个单元细胞活性ebsd或谷物的地图。可能的单位细胞HCP或立方。
%注意这不同于annotateUnitCell因为这个函数
%使用crystalShape函数,一个手工绘制单元细胞。
% X和Y是地图上的坐标,grainIds列表的谷物将单位细胞。
% ScaleFactor > 1晶胞的大小增加,
%值< 1减少它与谷物和GSscale = 1原因扩展区域。
% LineWdth, LineColour控制的轮廓
%单位细胞。FillFace, FillColour控制灌装的脸
%单位细胞(填补面临FillFace = 1),和填充的颜色。
%的谷物将谷物变量。这个名字是作为字符串传递给脚本的目的。
%单元阵列是脚本返回的数据
%版本2:减少规模因子12匹配crystalShape输出。现在
%使用grainIds代替水晶ori,因为这使晶粒尺寸和
%的方向信息。正交选项删除,现在分开
%程序设计功能,注释标签T3的一部分
h = waitbar (0,' 1 ',“名字”,“注释…”,“CreateCancelBtn”,“setappdata (gcbf,“取消”,1)');%画一个进度条
setappdata (h,“取消”,0);
传说
持有
i = 1:尺寸(grainIds, 1)
%检查点击取消按钮
如果getappdata (h,“取消”)
删除(h)% waitbar密切
打破
结束
如果国防部(我,10)= = 1每10循环更新waitbar %
perc =圆(100 *我/尺寸(grainIds, 1), 0);
waitbar (perc / 100 h, sprintf (“% d % %沿着…”,perc))
结束
%允许点没有索引数据,蒙混过关
试一试
crystalOri =谷物(grainIds(我).meanOrientation;
c =谷物(grainIds(我)。cs;
继续
结束
%检查标志使晶粒尺寸缩放。
如果GSscale = = 1
%由ScaleFactor规模和谷物
gs =√谷物grainIds(我).area) * ScaleFactor;
其他的%由ScaleFactor规模
gs = ScaleFactor;
结束
%检查形状图
如果ismember (cs。晶格,{“立方”,“斜方晶系的,“三斜晶系的,单斜的,“正方”})
c = crystalShape(米勒({1 0 0},{0 1 0},{0,0,1},cS));
elseifismember (cs。晶格,{“六角”,“三方”,“菱形的”})
c = crystalShape.hex (cS);
其他的%使用这个选项标记错误
disp (的单位细胞类型没有找到。跳过这一点”);
继续%跳过剧情命令和进入下一个循环
结束
%以上情节必须足够高的飞机。所以细胞不“穿透”地图
% crystalShape单位细胞是一个单位,乘以比例因子(可能是由上面的晶粒尺寸缩放)。Threfore,设置
% z =比例因子
%的填充因子添加到允许旋转角
如果strcmpi (getMTEXpref (“zAxisDirection”),“intoPlane”)
Z = - gs * 1.4;
其他的%如果z平面确保v_T (z)是确保所有行> 0以上
% ebsd地图表面和可见的
Z = g * 1.4;
结束
%画线或根据fillface设置
如果FillFace = = 0
情节(X(我),Y(我),Z, crystalOri * c * gs,“FaceAlpha”0,“线宽”LineWdth,“Edgecolor”LineColour,“标签”,“注释”);
elseifFillFace = = 1
情节(X(我),Y(我),Z, crystalOri * c * gs,“FaceColor”FillColour,“线宽”LineWdth,“Edgecolor”LineColour,“标签”,“注释”);
结束
结束
持有
删除(h)% waitbar密切
ScriptReturned {1} =' % ANNOTATEUNITSHAPE吸引一个自动选择单元细胞形状(HCP或立方)ebsd或谷物之前画的地图。”;
ScriptReturned {2,} =' % X和Y是地图上的坐标,方向是通过grainIds纹理数据的;
ScriptReturned{结束+ 1}=“传说;坚持;”;
ScriptReturned{结束+ 1}=' %使用X坐标得到循环迭代的长度;
ScriptReturned{结束+ 1}='因为我= 1:长度(grainIds) ';
ScriptReturned{结束+ 1}=' %过滤点没有索引数据,通过滑”;
ScriptReturned{结束+ 1}=“试一试”;
ScriptReturned{结束+ 1}= [“crystalOri = 'GrainsVarName,”(grainIds (i)) .meanOrientation;”];
ScriptReturned{结束+ 1}= [“cs = 'GrainsVarName,”(grainIds(我)。cs,“];
ScriptReturned{结束+ 1}=“抓”;
ScriptReturned{结束+ 1}=“继续”;
ScriptReturned{结束+ 1}=“结束”;
ScriptReturned{结束+ 1}=' %检查标记,使晶粒尺寸缩放”;
ScriptReturned{结束+ 1}=“如果GSscale = = 1”;
ScriptReturned{结束+ 1}= [“gs =√”GrainsVarName,”(grainIds(我))* ScaleFactor .area);“];
ScriptReturned{结束+ 1}=“其他%使用单位价值和比例因子的;
ScriptReturned{结束+ 1}=“gs = ScaleFactor;”;
ScriptReturned{结束+ 1}=“结束”;
ScriptReturned{结束+ 1}=' %检查形状绘制的;
ScriptReturned{结束+ 1}=“如果ismember (cs。晶格,{''cubic'', ''orthorhombic'', ''triclinic'', ''monoclinic'', ''tetragonal''})';
ScriptReturned{结束+ 1}=' c = crystalShape(米勒({1 0 0},{0 1 0},{0,0,1},cS));“;
ScriptReturned{结束+ 1}=“elseif ismember (cs。晶格,{''hexagonal'', ''trigonal'', ''rhombohedral''})';
ScriptReturned{结束+ 1}=' c = crystalShape.hex (cS),“;
ScriptReturned{结束+ 1}=“其他%使用这个选项标记错误”;
ScriptReturned{结束+ 1}=“disp(“单位细胞类型没有找到。跳过这一点“);;
ScriptReturned{结束+ 1}=“继续%跳过剧情命令,进入下一个循环;
ScriptReturned{结束+ 1}=“结束”;
ScriptReturned{结束+ 1}=' %以上情节必须足够高的飞机。所以细胞并“t”冲头通过“地图”;
ScriptReturned{结束+ 1}=' % crystalShape单位细胞是一个单位,乘以比例因子(可能是由上面的晶粒尺寸缩放)。Threfore, z =比例因子和添加“填充因子”,允许旋转角的;
ScriptReturned{结束+ 1}=“如果strcmpi (getMTEXpref (“zAxisDirection”)、“intoPlane”)”;
ScriptReturned{结束+ 1}=‘Z = - gs * 1.4;;
ScriptReturned{结束+ 1}=的其他%如果z平面确保v_T (z)是确保所有行> 0以上ebsd地图表面和可见的;
ScriptReturned{结束+ 1}=“Z = g * 1.4;”;
ScriptReturned{结束+ 1}=“结束”;
ScriptReturned{结束+ 1}=' %情节为线或填充取决于fillface设置”;
ScriptReturned{结束+ 1}=“如果FillFace = = 0”;
ScriptReturned{结束+ 1}=的情节(X (i), Y(我),Z, crystalOri * c * gs,“FaceAlpha”, 0,“线宽”,LineWdth,“Edgecolor LineColour);”;
ScriptReturned{结束+ 1}=“elseif FillFace = = 1 ';
ScriptReturned{结束+ 1}=的情节(X (i), Y(我),Z, crystalOri * c * gs,“FaceColor”, FillColour,“线宽”,LineWdth,“Edgecolor LineColour);”;
ScriptReturned{结束+ 1}=“结束”;
ScriptReturned{结束+ 1}=“结束”;
ScriptReturned{结束+ 1}=“拖延”;
结束

接受的答案

克里斯·拉皮埃尔
克里斯·拉皮埃尔 2020年12月20日
当你在一个阴谋的应用,你应该使用以下语法指定轴绘制成: 情节(ax,___)
引导程序,它将会是这样的
情节(handles.axes1, x, y)
在应用程序设计师,是类似的
情节(app.UIAxes, x, y)
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2020年12月20日
当你使用传奇 或其他绘图命令包括情节(),和您没有指定容器对象应用的命令,那么图形命令将去找合适的容器对象。然而,搜索完成不寻找uifigure或他们的孩子。一个命令,如 传说了 知道它是应用一些uiaxes命令。“当前”uiaxes实际上是不存在的。所以 传说 会打猎,必要时将创建一个完整的图和轴。但是如果你最近命令waitbar()然后因为waitbar()创建一个传统的图,图由waitbar()可能是“当前”图所做的搜索的目的 传说 和类似的命令 传说 情节 会愉快地画在图创建waitbar ()。
waitbar()不是 转换 成一个图:waitbar () 已经 图……可能唯一的传统图。
当你使用应用程序设计师,而不是使用waitbar()你会更好用 //www.tianjin-qmedu.com/help/matlab/ref/uiprogressdlg.html 。本身不解决这个问题,你问情节传奇()和()没有指定容器应用,但至少会保存你的症状变这样。

登录置评。

更多的答案(0)

s manbetx 845


释放

R2018b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!