LabVIEWForum.de
XY Graph zeichnen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Signaldarstellung (/Forum-Signaldarstellung)
+---- Thema: XY Graph zeichnen (/Thread-XY-Graph-zeichnen)

Seiten: 1 2


XY Graph zeichnen - LV-Starter123 - 01.11.2011 18:43

Hallo Leute,

ich habe einiges im Forum bezüglich meinem Problem, welches ich gleich erläutere gelesen. Ebenso die Bsp. VI`s von NI durchgestöbert, trotzdem hänge ich momentan an einer Stelle.

Es geht darum bei einem XY Graph eine Kennlinie mit der Maus zu zeichnen, wobei dies nicht Freihand in alle Richtungen gezeichnet werden darf sondern von links nach rechts z.b. von der 0s bis z.b. 10s. Hierbei soll auch kein Gewackel des Freizeichnens auftauchen, daher besteht mein Wunsch darin eine Kennlinie bei Amplitude 0 vorzugeben und als Startinitialwert bis 10 Sek. laufen zu lassen. Ich kann dann noch das dt bestimmen somit habe ich wie am Besten im angehängten Bsp. zu sehen ist eine Kennlinie mit z.b. 10 Punkten mit dem Amplitudenwert 0.

Hier das VI:

[attachment=36835]

Als Erklärung, es wird bevor "das Ziehen" der Punkte im XY Graph möglich ist, die Schrittweite und die Zeitdauer eingegeben. Daraufhin (ist leider noch nicht programmiert) soll an jedem Punkt die Möglichkeit bestehen diesen nach oben oder unten zu ziehen jedoch nicht nach rechts oder links. Somit kann der Nutzer jeden Punkt beliebig hoch verschieben und wenn er die Schrittweite genug klein macht auch einen ziemlich genauen Graphen herstellen.

Ich hoffe es kommen zahlreiche Ideen, Vorschläge, Abänderungen :-).

Ich wünsche allseits einen schönen Abend.

Bis bald.

Gruß LV-Starter


RE: XY Graph zeichnen - GerdW - 02.11.2011 09:36

Hallo Starter,

du hast doch schon einen Cursor im Graph. Werte einfach aus, bei welchem Punkt im Plot sich der Cursor befindet (oder: welcher ihm am nächsten ist) und setze diesen Punkt auf die Y-Koordinate des Cursors. Nicht allzu schwierig...


RE: XY Graph zeichnen - LV-Starter123 - 02.11.2011 18:37

Hi GerdW,

mh das Auswerten ist für mich ein Problem, habe jetzt mal bei der Ereignisstruktur oben links eine 1 als Wert hinzugefügt, somit bekomm ich jetzt wenn ich zwei Anzeigeelemente an die X und Y Position lege im Time-Out Ereignis den aktuellen Wert, je nach dem wo ich den Cursor hinziehe auf der X Achse. Wobei in Y Richtung "noch" nichts geht, ist ja noch nichts programmiert :-). Mit welcher Property Node kann ich denn deine Idee verwirklichen oder soll ich über ein Ereignis vom XY Graph gehen?
Weiß grad nicht wohin des Weges und dass du es so leicht findest setzt mich zudem unter Druck :-).
Willst du nicht kurz ein paar goldene Klicks machen um mir mit Hilfe von Programmcode unter die Arme zu greifen? ;-). (Ich will keine fertigen Lösung gepostet bekommen, nur ein paar veranschauliche Programmcodeschnipsel damit ich auf dem richtigen Weg fahre.)

Ist es vll. geschickter wenn ich nicht über den Cursor gehe sonderen diesen enferne und irgendwie die Mausklicks überprüfe ob sie in der Nähe eines gewählten Punktes sind bzw. ist und diesen dorthin verschiebe wo er die Maustaste wieder loslässt?!?

Vielen vielen Dank für die Hilfe und für die bereits gemachten und noch kommenden Vor- und Ratschläge.

Schönen Abend.

Gruß LV-Starter


RE: XY Graph zeichnen - GerdW - 02.11.2011 18:46

Hallo Starter,

Zitat:habe jetzt mal bei der Ereignisstruktur oben links eine 1 als Wert hinzugefügt,
Aha. Und was soll mir das sagen? Wo ist der Unterschied, wenn die "1" unten rechts steht?

Quintessenz: VI anhängen...

Ansonsten PAP malen:
- Cursorposition abfragen
- X.Pos des Cursors auf nächste X-Position des Plots runden und damit den Index des aktuell bearbeiteten Punkts finden
- Y.Pos des Cursors als neue Y-Koordinate des Punkts eintragen

Ja, das gleiche geht auch mit Mausklicks. Ist der gleiche Ablauf, nur das der User beim Cursor eine optische "Rückmeldung" hat...


RE: XY Graph zeichnen - LV-Starter123 - 02.11.2011 18:50

sorry, hier das VI:

[attachment=36863]

Es ist fast nichts verändert worden, außer die 1 an der Ereignisstruktur, siehe Screeshot und die beiden Anzeigeelemente.

[attachment=36864]
Was meinst du mit PAP malen?

die Abfrage auf die x,y Position erfolgt ja mit Property Nodes vom XY Graph, kann ich den Code einfach die While-Schleife programmieren oder muss ich per Mausklick über die Ereignisstruktur da ran?

Gruß LV Starter


RE: XY Graph zeichnen - GerdW - 02.11.2011 19:00

Hallo Starter,

erstens musst du nicht 1000mal pro Sekunde den Cursor abfragen und zweitens solltest du ihn nicht auf den Plot einrasten - so kann man ja gar keinen neuen Y-Wert vorgeben...


RE: XY Graph zeichnen - LV-Starter123 - 02.11.2011 19:10

ich lasse den cursor nun nicht 1000 mal abfragen, jedoch hat sich mein Problem verschlechtert wenn ich den Cursor nicht einraste auf den Graph. Löse ich ihn bzw. leg einen Neuen an der frei ist so geht meine Skalierung verloren wenn ich in Y Richtung mich bewege und ich verliere den Überblick. Ich möchte die Skalierung vor dem Ziehen des Graphen festlegen und dann die Kennlinie die 10sek. auf 0 liegt variabel nach oben oder unten ziehen.

Ich finde das leider nicht so einfach, auch mit deiner schriftlichen Hilfe weiß ich nicht so recht wo ich wann und vorallem wie Mausklicks abfragen soll, über die Ereignisstruktur oder Property Nodes...:-(


RE: XY Graph zeichnen - GerdW - 03.11.2011 09:01

Hallo Starter,

Mausklicks kannst du nur über die Eventstruktur abfragen...

PAP

Um Cursorpositionen abzufragen, bietet sich aber statt irgendwelcher Mausevents das CursorMove-Event an. Dieses liefert dir auch gleich die Cursor-Position. Nun musst du nur:
- X-Pos des Cursors abfragen
- herausfinden, welcher Punkt in deinem Plot am nächsten liegt (auf der X-Achse)
- dann die Y-Pos des Cursors diesem Punkt zuweisen
- warten auf die nächste Cursorbewegung...

Edit:
Ich habe dein VI mal etwas bearbeitet. Punkte einfügen mittels "Boolean"-Knopf...


RE: XY Graph zeichnen - LV-Starter123 - 03.11.2011 09:17

Vielen Dank schon mal, habe es noch nicht angeschaut und komme erst am Wochenende dadazu.

Bis dahin, eine schöne restliche Woche :-)

Gruß LV Starter


RE: XY Graph zeichnen - LV-Starter123 - 06.11.2011 18:47

Guten Abend zusammen,

hier das funktionsfähige VI, welches eine Graphen mit der Maus editieren lässt. Es ist möglich mittels dem Cursor eine genaue Y Position anzufahren oder einfach nur ein Punkt in der Nähe einer gewünschten Position anzuklicken, hierbei wird der nächstpassendste X-Wert gesucht und dann der Graph gezeichnet. Außerdem kann zu jedem Zeitpunkt die Schrittweite verändert werden.

[attachment=36940]

Gerne nehme ich noch Verbesserungsvorschläge an im Hinblick auf Codeverkleinerung bzw. der Qualität des Codes falls es komfortabler funktionieren sollte.

Ich wünsche allen einen angenehmen Wochenstart.

Grüße

LV-Starter123