WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Datacursormode in GUI - Festlegung des auswählbaren Objekts

 

k_a_t_h_a_r_i_n_a

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.06.2017, 07:46     Titel: Datacursormode in GUI - Festlegung des auswählbaren Objekts
  Antworten mit Zitat      
Hallo Smile Ich bin absoluter Matlab-Neuling und versuche mich gerade für eine Projektarbeit an einem GUI. In diesem GUI soll zunächst ein 3D-Modell über einen Push-Button ausgewählt und in die axes geladen werden. Das funktioniert auch soweit ganz gut. Im weiteren Verlauf werden über den Datacursormode verschiedene Punkte auf dem Modell ausgewählt, gespeichert und als Punkt auf die Oberfläche geplottet und auch Linien zwischen diesen Punkten werden eingezeichnet, die dann z.T. durch das ursprüngliche 3D-Modell durch gehen. Macht man das Modell transparent, dann kann man diese Linien sehen.

Das Modell lade ich wie folgt (die Funktionen loadawobj und display_obj_new habe ich im Internet gefunden und übernommen. Obj wird dabei als struct geladen)
Code:
% Modell und Textur laden
function selectObject_Callback(hObject, eventdata, handles)
% 3D-Modell laden
fileName_obj = uigetfile('.obj','Please select obj-file');
obj = loadawobj(fileName_obj);
fileName_texture = uigetfile('.png','Please select texture-file');
display_obj_new(obj,fileName_texture);
hold on


Bis hier hin habe ich das Ganze mit dem Auswählen, Speichern und Plotten der Punkte einfach über "datacursormode on" und "dcm_obj = datacursormode()" (also ohne figure_handle in der Klammer zu definieren) laufen lassen und es hat auch beim Setzen der Punkte immer geklappt, dass die Oberfläche des 3D-Modells ausgewählt wurde.

Nun möchte ich nach dem Einzeichnen der Linien (wieder über einen Push-Button ausgelöst) Punkte auf der 3D-Objekt-Oberfläche auswählen, bei denen ich mich an Kreuzungspunkte der eingezeichneten Linien (über plot3 eingefügt) orientiere. Mein Problem ist hierbei, dass der datacursor jetzt nicht mehr die Oberfläche meines 3D-Objekts auswählt, sondern diesen Kreuzungspunkt der Linien stattdessen auswählt, der sich im Inneren des Modellvolumens befindet.
Ich habe gelesen, dass man dem datacursor über "datacursormode(figure_handle)" zuweisen kann, auf welches Objekt er sich beziehen soll, weiß aber nicht, wie ich das mit dem GUI und den handles und so hier anwenden kann. Hab es schon mit Befehlen wie datacursormode(handles.selectObject.obj) probiert, aber krieg nur Fehlermeldungen. Auch wenn ich versuche mit den Befehlen "setappdata" und "getappdata" das 3D-Modell von dem einen Push-Button zum nächsten zu übergeben, klappt das leider nicht.

Ich hoffe, mir kann hier jemand weiterhelfen.
Vielen Dank schonmal!


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.