LabVIEWForum.de - 3D Oberfläche-mouse move

LabVIEWForum.de

Normale Version: 3D Oberfläche-mouse move
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo alle zusammen,

ich habe eine Frage bezüglich 3d-Graphen. Ich würde gerne bei einem Mausklick auf eine Position auf einer 3D-Oberfläche den dazugehörigen z-Achsenwert ausgeben. Dazu habe ich auch eine Seite auf der NI-Homepage gefunden (leider nur für Visual Basic):

http://zone.ni.com/devzone/cda/tut/p/id/2820

Ich habe es über den trackmode "cwG3DTrackAllEvents" versucht. Habe dann aber bei den Eigenschafts- und Methodenknoten keine Möglichkeit gefunden, wie ich Mausereignisse einstellen kann.
Vielleicht kann mir von Euch jemand weiterhelfen. Vielen Dank im Voraus!

Bis dann
Matthias
' schrieb:Hallo alle zusammen,

ich habe eine Frage bezüglich 3d-Graphen. Ich würde gerne bei einem Mausklick auf eine Position auf einer 3D-Oberfläche den dazugehörigen z-Achsenwert ausgeben. Dazu habe ich auch eine Seite auf der NI-Homepage gefunden (leider nur für Visual Basic):

http://zone.ni.com/devzone/cda/tut/p/id/2820

Ich habe es über den trackmode "cwG3DTrackAllEvents" versucht. Habe dann aber bei den Eigenschafts- und Methodenknoten keine Möglichkeit gefunden, wie ich Mausereignisse einstellen kann.
Vielleicht kann mir von Euch jemand weiterhelfen. Vielen Dank im Voraus!

Bis dann
Matthias


Also, da ist was zu machen. Erstens musst du in Properties Track All Events einstellen, dann ein Callback VI erstellen. Die Daten vom Callback bekommst du z.B. über einen Notifier ins Haupt VI. Zum Probieren kannst du auch eine Globale Variable nehmen.

eg
Vielen Dank für Deine Antwort! Ich komme heute leider nicht mehr dazu sie mir anzuschauen. Wird morgen aber gleich das Erste sein was ich tun werde.
Bis dann
Matthias
' schrieb:Also, da ist was zu machen. Erstens musst du in Properties Track All Events einstellen, dann ein Callback VI erstellen. Die Daten vom Callback bekommst du z.B. über einen Notifier ins Haupt VI. Zum Probieren kannst du auch eine Globale Variable nehmen.

eg

Hallo Eugen,

nochmals vielen Dank. Es funktioniert genauso wie ich es mir vorgestellt habe. Dais

Noch eine kurze Frage, wie erstelle ich ein solches CallbackVI? Und kennst du vielleicht noch eine Möglichkeit, wie ich das Ergebnis, am Besten in einem Textfeld welches neben der Maus erscheint, ausgeben kann?

Bis dann
Matthias
Gut, dass es bei dir geklappt hat.

Zu deiner neuen Frage, wollte ich dir die einfachste Methode vorstellen um sowas zu machen. Es klappt aber gerade bei ActiveX-Elementen nicht so, wie es soll.

Für andere Sachen, nimmt mann einfach eine numerische Anzeige und setzt seine Position zu der Maus-Position, wenn die Maus über dem Element sich befindet.

Mit dem Event Mouse Enter und Mouse Leave kann man die numerische Anzeige ein- und ausblenden.

Aber wie gesagt, das klappt bei den üblichen LV-Elementen, nicht bei fremden ActiveX. Bei dir kannst du ein einfaches VI erstellen, wo nur eine numerische Anzeige ist(Fensterrand u.s.w kannst du in VI-Eigenschaften abwählen). Dieses VI kannst du dann aufrufen, sobald die Maus das Element betritt(Mouse Enter) und mit der Property FPClose, kannst du das VI verschwinden lassen, sobald die Maus das Element verlässt (Mouse Leave).

eg


P.S. hier findest du eine Bibliothek, mit der man die Fensterposition steuern kann. Und hier ein VI, wo das angewendet ist.
Hi Eugen,

vielen Dank noch einmal für Deine schnelle und exzellente Hilfe. Auch das funktioniert genauso wie ich es mir vorgestellt habe.

Trotzdem habe ich noch die Frage, wenn ich selbst ein solches Callback-VI erstellen möchte, wie muss ich da vorgehen? Oder kann ich so etwas automatisch erstellen lassen?


Bis dann
Matthias
' schrieb:Hi Eugen,

vielen Dank noch einmal für Deine schnelle und exzellente Hilfe. Auch das funktioniert genauso wie ich es mir vorgestellt habe.

Trotzdem habe ich noch die Frage, wenn ich selbst ein solches Callback-VI erstellen möchte, wie muss ich da vorgehen? Oder kann ich so etwas automatisch erstellen lassen?
Bis dann
Matthias


Rechtsklick auf Register Event Callback Node -> Create Callback VI

eg
' schrieb:Aber wie gesagt, das klappt bei den üblichen LV-Elementen, nicht bei fremden ActiveX. Bei dir kannst du ein einfaches VI erstellen, wo nur eine numerische Anzeige ist(Fensterrand u.s.w kannst du in VI-Eigenschaften abwählen). Dieses VI kannst du dann aufrufen, sobald die Maus das Element betritt(Mouse Enter) und mit der Property FPClose, kannst du das VI verschwinden lassen, sobald die Maus das Element verlässt (Mouse Leave).



Hallo nochmal,

ich habe festgestellt, dass das "Mouse Enter" und "Mouse Leave" bei Activex-Elementen nicht ganz einfandfrei läuft. Ich hänge mein Beispiel-VI an. Betritt man das Bild, dann reagiert die while-Schleife wunderbar, betritt man das Activex-Element, dann funktioniert sie nicht mehr so. Vielleicht hat jemand eine Idee, wie ich das Problem umgehen oder lösen kann.
Vielen Dank im Voraus.

Bis dann
Matthias
' schrieb:Hallo nochmal,

ich habe festgestellt, dass das "Mouse Enter" und "Mouse Leave" bei Activex-Elementen nicht ganz einfandfrei läuft. Ich hänge mein Beispiel-VI an. Betritt man das Bild, dann reagiert die while-Schleife wunderbar, betritt man das Activex-Element, dann funktioniert sie nicht mehr so. Vielleicht hat jemand eine Idee, wie ich das Problem umgehen oder lösen kann.
Vielen Dank im Voraus.

Ich glaube nicht das das einfach geht. ActiveX Elemente sind effektiv externe Objekte die sich komplett auf Windows Ebene in die Eventverarbeitung einhängen. LabVIEW bekommt die Events die ein ActiveX Element empfängt normalerweise nicht einmal zu sehen. Daher ist es eigentlich nicht möglich eine zuverlässige Mauseeventerkennung zu machen solange sich die Maus auf einem solchen Control befindet.

Rolf Kalbermatter
Hallo nochmal,

ich habe nun versucht mein Problem auf eine andere Art und Weise zu lösen (siehe Anhang).

Kann mir vielleicht jemand einen Tip geben, wie ich die Position des Mauszeigers in den Koordinaten des FPs angeben kann, ohne dabei einen Ereigniscase zu verwenden?

Bis dann
Matthias
Seiten: 1 2
Referenz-URLs