2016-06-13 4 views
0

Я пишу программу с gui. кроме функций, которые создавали автоматические, такие как обратные вызовы для объектов в gui, я хочу создать определенные пользователем функции, чтобы использовать их повсюду в этой программе. поэтому я создал функцию meshing, которую я пишу ниже.Как установить текущие оси в пользовательской функции в MATLAB?

function meshing(p1, p2, p3, p4, p5, p6, p7, p8) 

pmb = [((p1(1) + p5(1))/2) ((p1(2) + p4(2))/2) p1(3) ]; 
pmt = [((p1(1) + p5(1))/2) ((p1(2) + p4(2))/2) p2(3) ]; 

p23 = (p2 + p3)/2; 

a = get(gcf); 
axes(handles.axes3d); 
scatter3(pmt(1),pmt(2),pmt(3)) 

, но когда я запускаю его, это ниже ошибка показывает

Ошибка при оценке UIControl Ответный

неопределенная переменная "ручки" или класса "handles.axes3d".

Ошибка в SSF> сетчатых (линия 897) осей (handleles.axes3d);

но у меня есть axes3d в моем gui. что я могу сделать

+1

У вас нет входной аргумент с именем 'handles'. Можете ли вы показать, где вы определяете 'meshing' как обратный вызов? – Suever

ответ

1

Основная проблема заключается в том, что handles не определен в пределах вашей функции, потому что она не передается как вход. Если вы посмотрите на все внутренне определенные обратные вызовы, они будут иметь handles в качестве входных данных.

Не видя точный код для того, как вы иметь свой графический интерфейс вызова этой функции meshing, вы могли бы получить guidata графического интерфейса, чтобы иметь доступ к переменной handles из вашей функции.

handles = guidata(gcf); 

Затем вы можете использовать его в вашей функции

scatter3(pmt(1), pmt(2), pmt(3), 'Parent', handles.axes3d) 

 Смежные вопросы

  • Нет связанных вопросов^_^