Linie als VisualObjectType benutzen

Fragsau

Level-2
Beiträge
75
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi zusammen,

ich möchte mir ein eigenes Kurvendiagramm in der Visu basteln, bei der mehrere Kurven angezeigt werden könne.
Dazu habe ich mir überlegt das Ganze mittels VisualObjectType umzusetzen.
Leider bekomme ich das mit dem Objekt Linienzug nicht hin. Mit dem Objekt Rechteck habe ich VisualObjectType bereits umgesetzt.

Vor hab ich, dass ich 24 Linienzüge implementiere. Diese verknüpfe ich alle mit einem Objekt des Types VisualObjectType. Abhängig von den Werte, die das Kurvendiagramm haben soll, sollen sich eben die einzelnen linienzüge verschieben.
Etwa so:
Code:
FOR i:= 1 TO 24 DO
    IF i = 1 THEN
        Kurve[i].nLeft := OffsetX;
        Kurve[i].nTop := OffsetY- REAL_TO_INT(2*Daten[i-1]);
        Kurve[i].nRight:= Kurve[i].nLeft+Breite;
        Kurve[i].nBottom := OffsetY- REAL_TO_INT(2*Daten[i]);
    ELSE
        Kurve[i].nLeft := Kurve[i-1].nRight;
        Kurve[i].nTop := OffsetY- REAL_TO_INT(2*Daten[i-1]);
        Kurve[i].nRight:= Kurve[i].nLeft+Breite;
        Kurve[i].nBottom := OffsetY- REAL_TO_INT(2*Daten[i]);
    END_IF;
END_FOR;

Kurz: Ende des ersten ist der Anfang des Zweiten.

Leider bekomme ich die Linienzüge so nicht verschoben. Kann man nicht direkt auf die Koordinaten zugreifen?

Habt ihr vielleicht eine anderen und besseren Ansatz?

Vielen Dank.

Grüße
Fragsau
 
Moin wie viele Kurven sollen dargestellt werden?

du kannst ja auch mehrere Histogramme einfach übereinanderlegen.
Beste Grüße Hendrik
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aktuell würde ich 3 Kurven in ein Diagramm legen wollen.

Übereinanderlegen ist auch ne Idee, zwar wieder gefummelt, aber es würde gehen :-)

Bei dem aktuellen Histogramm stört mich aber auch, dass ich keine X-Achsen Bezeichnung habe. "Mein" Histogramm würde ich dann auf meine Bedürfnisse zusammen bauen.

Frage am Rande, aber auch für diesen Zweck:
Kann man in der Eigenschaft Programmierfähigkeit eines Objektes auch einen Platzhalter angeben, sodass man quasi einen Bildaustein/Usercontrol baut, der dann mit "irgendwelchen" Objekten arbeiten kann? In meinem Fall würde ja eine Kurve aus 24 Linien bestehen. Dass 3 mal in einem Diagramm. Da wäre es schhön, wenn ich die 24 Linien als Bildbaustein/Usercontrol erstellen könnte.

Danke schonmal
 
Hi,

Entweder es sind jeweils 24 einzelne Linien mit einem Anfangs- und einem Endpunkt oder eine mit 24 Punkten.
Das wäre mir noch egal, wobei eine Linie schon schöner wäre...
 
Wie gesagt, da die x-achse nicht skaliert ist, evtl. in der y-achse unterschiedliche einheiten/bereiche sein sollten.
Ich denke, dass ich damit meine Lösung hinbekomme.

Allerdings würde mich schon noch interessieren, ob es gehen würde mit dem Linienzug
 
sollte gehen mit nem linienzug (ist sehr aufwändig und benötigt viel Leistung meiner Meinung nach) - habe ich auch schonmal bei TC3 gemacht, sollte dann auch bei Codesys funktionieren.

ich guck mal ob ich das wieder finde. ich meine man kann nen xy Array einfach an eine interne visuvariable geben. aber ganz sicher bin ich mir nicht mehr. ist schon was länger her.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey ging schneller als gedacht - nutze es sogar selber im aktuellem projekt :D - mit dem folgenden VisuElems kannst du eine Linie mit xy koordinaten anzeigen lassen

aVisuStructPoints_Linie: ARRAY[0..1] OF visuElems.VisuStructPoint;
 
Wichtig: Alle zugriffe auf die VisuElems immer aus der VisuTask - Dein PRG muss in dem Task sein! Hatte sonst immer wieder probleme!
 
Zurück
Oben