Я делаю графический интерфейс для программы, которую я создал, где мне нужно иметь возможность изменять положение нагрузки вдоль балки. Я правильно настроил оси и ползунок, но я не уверен, как заставить оси обновляться, так как я не могу найти примеров, показывающих, как это сделать в Интернете.
В настоящее время, когда я перемещаю груз, позиция обновляется должным образом, но старая позиция также остается на экране, что довольно раздражает.
Кто-нибудь может порекомендовать какие-нибудь хорошие примеры, которые показывают, как это сделать, или у кого-нибудь есть предложения, как выполнить обновление осей?
Вот обратный вызов ползунка (я не включил функцию create_fcn). Кроме того, в коде много комментариев, так как я использовал функцию Guide для создания GUI.
Обратите внимание, что входной сигнал для ползунка - это пропорция общей длины луча (в виде десятичной дроби).
function PointLoadxx1posslider_Callback(hObject, eventdata, handles)
% hObject handle to PointLoadxx1posslider (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
% get(hObject,'Min') and get(hObject,'Max') to determine range of slider
PLxx1pos = get(handles.PointLoadxx1posslider,'value');
set(handles.PLxx1posedit, 'String', num2str(PLxx1pos));
l = 3000; % This is the Length of the beam
zpl1 = get(handles.PointLoadxx1posslider,'value')*l;
% Multiplies the position decimal by the overall length
LoadPlotter(hObject,zpl1,handles) % Sends the command to the plot plot function
guidata(hObject,handles);
function LoadPlotter(hObject,zpl1,handles)
% The following draws the beam supports as lines
SH = l/20; %Height of supports
line([0 l], [SH/2 SH/2])
line([-SH/2 SH/2], [0 0])
line([-SH/2 0], [0 SH/2])
line([0 SH/2], [SH/2 0])
line([l-SH/2 l+SH/2], [0 0])
line([l-SH/2 l], [0 SH/2])
line([l l+SH/2], [SH/2 0])
xlim([ -100 l+200])
ylim([-l/2 l/2])
%Draw Load position
% zpl1 = get(handles.PointLoadxx1posslider,'value')*l;
% zpl1 = 0.5*l;
zpl2 = 0.2*l;
PL1 = 50;
%This is the value of the point load applied to the beam, which will
be an input from another slider
PL1Draw = line([zpl1 zpl1],[SH/2 PL1*10]);
% refresh(handles.axes1);
guidata(hObject,handles);
Очевидно, что я хотел бы сохранить другие линии нарисованными, но измените PL1Draw при перемещении ползунка. Пожалуйста, вы можете объяснить, что я должен пометить для этого?
Большое спасибо заранее.
Джеймс