How to use onCleanup?

11 vues (au cours des 30 derniers jours)
Uyen Nguyen
Uyen Nguyen le 27 Sep 2020
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')

Réponses (1)

Walter Roberson
Walter Roberson le 27 Sep 2020
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;

Catégories

En savoir plus sur Specifying Target for Graphics Output dans Help Center et File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by