How to use onCleanup?
4 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I currently have a running app where it calculates the moment of inertia after taking in inputs from user. The outputs are displayed on a separate figure after each calculation. I want to try to use onCleanup to try to close the old figure every time I calculate a new moment of inertia. But I'm confused on where to start.
if app.ShapeDropDown.Value == "Rectangle"
% taking in the dimensions of base and height
b = app.Dimension1EditField.Value;
h = app.Dimension2EditField.Value;
% Catching resulting errors if the input values are invalid
try
if b < 0 || h < 0
error('Negative Dimension(s) Entered')
end
catch
b = 0;
h = 0;
errordlg('Invalid Input');
errID = 'myComponent:inputError';
msgtext = 'Negative Inputs';
ME = MException(errID,msgtext)
end
% Calculate MOI
Ix = (b*(h^3))/12;
Iy = ((b^3)*h)/12;
% Displau the MOI on the table
d = {'Base',b, RegUnit;'Height',h,RegUnit;'Ix',Ix, CalcUnit;'Iy',Iy, CalcUnit'};
fig = uifigure('Position',[100 100 752 250]);
uit = uitable('Parent',fig,'Position',[25 50 700 200]);
uit.Data = d;
% Create axes for the figure. Axes of figure changes
% depending on base and height entered
app.UIAxes.XLim = [-1 b+1.00];
app.UIAxes.YLim = [-1 h+1.00];
%Polar axes
XX = linspace(b/2, Ix, 500);
YY = linspace(h/2, Iy, 500);
% % Create a vector that would span the X & Y direction
% positioned at the center of base and height
IXline = ones(1,500)*h/2;
IYline = ones(1,500)*b/2;
% Graph the rectangular shape on the axes
rectangle(app.UIAxes,'Position',[0 0 b h])
hold(app.UIAxes);%hold on
% plot the polar axes
plot(app.UIAxes,XX,IXline, 'r')
plot(app.UIAxes,IYline, YY, 'k')
hold(app.UIAxes,'off')
0 件のコメント
回答 (1 件)
Walter Roberson
2020 年 9 月 27 日
You probably would not use onCleanup for that. Instead you would create a property of app that you would initialize to gobjects(1) . I will call that MOIfig in the below. Then inside the routine, when you are ready to plot, you would
if isvalid(app.MOIfig)
close(app.MOIfig);
end
fig = uifigure('Position',[100 100 752 250]);
app.MOIfig = fig;
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Specifying Target for Graphics Output についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!