TIA Gute Idee für Algorithmus zum zeichnen von KOP/FUP

Jochen Kühner

Level-3
Beiträge
4.446
Reaktionspunkte
677
Zuviel Werbung?
-> Hier kostenlos registrieren
Kenn jemand Beispiel Bibliotheken die das machen wo man sich inspirieren kann?

Will in meine Tool eigentlich was einbauen das man KOP/FUP Bausteine betrachten kann, bspw als SVG.
So macht es ja auch das Automation Compare Tool.

Aber hab im Moment keinen guten Ansatz wie ich es am besten zeichne, so das es möglichst dem in TIA Ähnlich sieht....

Als Quelle hab ich im Endeffekt den Automation XML Export.
 
Natürlich muss man nix neues erfinden... ;-)
Können ja schon einige. Vlt. gibt da aber auch schon Bibliotheken dazu.
Im Moment kann ich den Aufwand dafür nur schwer abschätzen, und das ist ja eig. nur ein kleiner Teil, bzw. was nebensächliches, daher wollte ich da nicht viel Zeit reinstecken (wenn es was gibt)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab zwar von VisualStudio und Net relativ wenig Ahnung aber ich kann das Prinzip skizzieren.

1. Eine VectorDrawing Library verwenden, damit geht das Zeichnen und das Plazieren der Texte realativ einfach.

2. Für das Handling der Grafikblöcke: Eine Klasse mit den X,Y Positionen, der Größe der bounding Box und einer Liste aus einer Struct Anschlusspunkte erstellen. Dies Liste enthält die Anschlusspunkte und deren Zielverbindung.
Move und Draw Methode, evtl. eine DrawConnection.

3. Für die Datenstruktur der Grafik hätt ich auch einen Ansatz, abgeleitet vom STEP Format.
Alle Punkte (x,y), die es gibt in eine gemeinsame linked List. Eine Line besteht dann aus 2 Pointern auf die Punkte der Liste,
ein Rechteck ebenfalls, Eine Polyline oder ein Poligon aus einer Liste von Punkten. Ein Kreis aus einem Punkt und einem Radius.

4. Die Größe der Box ist relativ einfach aus den Eingängen, IO's, und Ausgängen zu ermitteln. Eine VectorDrawing Lib enthält normal auch alle Funktionen für den Platzbedarf von Texten zu errechnen.

SVG ist realtiv komplex, sofern man keine fertige Drawing library dafür hat.
Für das parsen von AWL Code um das in die Grafik zu übersetzen hab ich aber auch keinen Ansatz.

Das ist zwar recht grob, aber evtl. hilft es. Ich bin da schon zeit einiger Zeit dran für einen Symboleditor und verbinder.
Das Problem ist da ähnlich. Bin aber auch nicht weiter als bei einem Proof of concept. Ich hab da einiges auch schon ausgeschlossen. Das von STEP abgeleitete System scheint mir im Moment am besten!
 
das zeichnen an sich sehe ich nicht als das problem.

zu 4:
das sehe ich als problem.

Wie groß wird ein Block? Was ist wenn davor noch ein block auf einen Eingang kommt, dann verschiebt sich wieder alles.
Wenn dann noch ein oder ausenherrum geht....

Vlt muss ich mal anfangen und probieren....
1740560602392.png
es kann schon recht komplex werden, da die Größen sich ja Beinflussen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
zu 4:
das sehe ich als problem.

Wie groß wird ein Block? Was ist wenn davor noch ein block auf einen Eingang kommt, dann verschiebt sich wieder alles.
Wenn dann noch ein oder ausenherrum geht....
Das sehe ich jetzt aus meiner Perspektive gar nicht ganz so problematisch. Die Anschlusspunkte des Folgeblocks ergeben sich aus der Y Koordinate des Verbindungspunktes des vorgeschalteten Blocks. Da alles nur waagerecht und Senkrecht ist, glaub ich, dass sich das in relativem Wohlgefallen auflöst, sofern man die Baumstruktur aller Objekte gut ansetzt (da hab ich jetzt wie gesagt noch ein Problem). Ich vermute mal, dass es für Bäume, die sich nicht nur verzweigen, sondern auch wieder zusammenlaufen einen Fachbegriff gibt und dann auch Datenstrukturlösungen.

Da muss man glaub ich wirklich einfach mal anfangen und probierern ...!

Wie gesagt, ich hab vor ein paar Jahren angefangen, das STEP3D Format aufzudröseln, dass ist hart, aber irgendwann fängt man an das einigermaßen zu verstehen. Evtl. kann ich später noch mit ein paar Tips weiterhelfen falls es hackt.

Ich bin jedenfalls an dem Ergebnis und an dem how to do interessiert!
 
Zuletzt bearbeitet:
Nö, der Folgeblock kann den vorigen block beeinflussen, macht er bsp. wenn er zwischen 2 Anschlüssen parameter hat. Dann kann der vorige in Y verschoben werden....
 
Nö, der Folgeblock kann den vorigen block beeinflussen, macht er bsp. wenn er zwischen 2 Anschlüssen parameter hat
O.k.! Ich versuch mal bei nächster Gelegenheit mal darüber nachzudenken. Ich hab mir fast gedacht, dass du schon weiter bist als der erste Post vermuten lässt!

Ich denke mal dass du dazu hier im Forum relativ wenig Feedback bekommen wirst, da du auf einem Level unterwegs bist, den die meisten einfach nicht haben.
Für die SPS-Programmierung ist hier im Forum der Top-Level vorhanden, für die PC-Programmierung natülicher Weise eher nicht!
 
Zurück
Oben