How to use onCleanup?
4 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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 Kommentare
Antworten (1)
Walter Roberson
am 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;
0 Kommentare
Siehe auch
Kategorien
Mehr zu Specifying Target for Graphics Output finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!