Pure Circuit - Grafisches Programmieren (Node Editor)

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von STARGÅTE »

Leider gibts noch keine Version für euch zum testen, aber ein paar neue Eindrücke.

Wie ihr sehen könnt, baue ich gerade Rahmen-Knoten ein (wie z.B. If:Else, Select:Case, ...).
Im Grunde soll es ähnlich sein wie in PB (also z.B. Case 3 To 6, 8 To 10) oder mit Strings. Das If:Else ist auch einfach ein Select mit True und False.
Das ganze "Verschachteln" klappt bereits ganz gut, so kann man zB Knoten in anderen Rahmen hineinziehen oder auch Rahmen um andere Knoten "herrumziehen" (zweites Bild).
Was mich gerade etwas schwer voran kommen lässt, sind die Kabel. Diese müssen logischerweise "irgendwie" in die Rahmen hineingeleitet werden, z.B. mit Tunnel-Anschlüssen. Hier bin ich gerade dabei, dass diese Tunnel automatisch erstellt werden, wenn man über mehrere Verschachtlungen von innen nach außen (oder anders herum) ein Kabel legt.

Bild

Bild

Noch ein paar Antworten zu euren Beiträgen:

@Stevie63: Danke für den Link, werde mir das ganze mal angucken und Eindrücke sammeln.
NicTheQuick hat geschrieben:Besonders cool wäre ja eigentlich, wenn der Editor Code erzeugt und man ihn anpassen könnte für andere Programmiersprachen. Ich denke da zum Beispiel an eine Zusammenklickoberfläche für Mikrocontroller. [...]
Gute Idee, dann würde jedoch die parallele Ausführung wieder wegfallen müssen, bzw. durch Kabel eine eindeutige Reihenfolge festgelegt werden.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
RSBasic
Admin
Beiträge: 8022
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von RSBasic »

Dito :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
GPI
Beiträge: 1511
Registriert: 29.08.2004 13:18
Kontaktdaten:

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von GPI »

STARGÅTE hat geschrieben:Leider gibts noch keine Version für euch zum testen, aber ein paar neue Eindrücke.

Wie ihr sehen könnt, baue ich gerade Rahmen-Knoten ein (wie z.B. If:Else, Select:Case, ...).
Eventuell sind die Rahmen die falsche Methode für "IF" "CASE" etc.
Ich kenn das in Diagrammen, das man hier eine Raute nimmt. In die Raute die Frage und dann seitlich "ja" und "nein" weg.

Die Frage ist halt wirklich, worauf die genau hinaus willst. Bei deinen Beispiel auf der ersten Seite werden ja alle "Bäume" gleichzeitig berechnet.

Eventuell wäre ein "Switch/gate" die bessere Lösung. Zwei Eingänge. einen WERT, der ohne Typumwandlung weitergeleitet wird und einen "Power" eingang. Wenn ein Wahr an Power liegt, wird der Wert 1:1 übertragen, ansonsten endet der Baum.


Du könntest dann bspw. Wert mit IF >10 verbinden.
Dann ein Switch mit Wert in Eingang und den Wahr-Ausgang von IF.
und dann Switch ausgang in "In String umwandeln" und dann weiter zur Ausgabe.

Achja: Eventuell eine gute Idee, die Linien je nach Typ anders zu zeichen. Durchgehend ist Zahl, gestrichelt Strings.
CodeArchiv Rebirth: Deutsches Forum Github Hilfe ist immer gern gesehen!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von STARGÅTE »

Danke für dein Feedback GPI.
GPI hat geschrieben:Eventuell sind die Rahmen die falsche Methode für "IF" "CASE" etc.Ich kenn das in Diagrammen, das man hier eine Raute nimmt. In die Raute die Frage und dann seitlich "ja" und "nein" weg.
Du meinst Flussdiagramme. Das ist von der Sache schon richtig, allerdings soll die Oberfläche kein Flussdiagramm darstellen, sondern ehr sowas wie ein Blockdiagramm.
GPI hat geschrieben:Die Frage ist halt wirklich, worauf die genau hinaus willst. Bei deinen Beispiel auf der ersten Seite werden ja alle "Bäume" gleichzeitig berechnet.
Korrekt, und das ist auchgewollt bzw. beabsichtigt. Solange zwei oder mehr "mini"-Codes (wie das Erzeugen von diesem Sinnlosen Datum und die beiden anderen Berechnungen) nicht von einander abhängig sein (in Form von Daten), können/dürfen sie ja gleichzeitig ausgeführt werden. Natürlich macht das bei einer Ausgabe wenig sinn, bei einer komplexen Funktion mit z.B. 5 Eingängen und 5 Ausgängen dagegen schon, wenn die Funktion ihre Arbeit teilweise automatisch paralelisiert.
Bei den Ifs und Cases die ich gerade baue, ist es nun so, dass außschließlich einer der Rahmen überhaupt nur ausgeführt wird, wenn die jeweilige Zuordnung zutrifft. Zum Beispiel wird esspäter ein "ReadFile" Knoten geben (mit Pfad-Eingang und Referenz-Ausgang). Aber nur wenn die Datei gelesen werden konnte, wird dann der Rahmen ausgeführt, wenn gelesen werden kann, ansonsten der andere Rahmen (zB. mit einem MessageRequester-Knoten)
GPI hat geschrieben:Eventuell wäre ein "Switch/gate" die bessere Lösung. Zwei Eingänge. einen WERT, der ohne Typumwandlung weitergeleitet wird und einen "Power" eingang. Wenn ein Wahr an Power liegt, wird der Wert 1:1 übertragen, ansonsten endet der Baum.
Ich weis nicht ob wir das selbe meinen, meine Idee dazu wäre: ein "Boolean"-Eingang (dein power) und zwei Werte-Eingänge für den True und False Fall. Je nach Zustand wird dann entwederder eine oder andere Wert weiter geleitet.
GPI hat geschrieben:Achja: Eventuell eine gute Idee, die Linien je nach Typ anders zu zeichen. Durchgehend ist Zahl, gestrichelt Strings.
Jo hatte ich auch schon überlegt. Aktuell sind die Typen nur farblich zu unterscheiden, weil ich gestrichelt für "kaputte" Verbindungen nutzen wollte (wenn die Typen nicht passen oder so). Strings zu straffieren oder dicker zu machen wäre aber sinnvoll, da ja "mehr" transportiert wird. Arrays sollen später zB Doppellinien bekommen (je nach Dimension).

Ich gebe zu, es ist vermutlich noch schwer zu sehen, wo das ganze hinführen soll, da das wichtigste ja noch komplett fehlt, nämlich die Ein- und Ausgabe nach "außen" z.B. über Gadgets.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
man-in-black
Beiträge: 362
Registriert: 21.08.2006 17:39

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von man-in-black »

Hi,
Ich gebe zu, es ist vermutlich noch schwer zu sehen, wo das ganze hinführen soll, da das wichtigste ja noch komplett fehlt, nämlich die Ein- und Ausgabe nach "außen" z.B. über Gadgets.
Interessierten Lesern empfehle ich daher, wie du eingangs schon geschrieben hast, sich LabView anzusehen. Im Moment ähneln sich beide Vorgehen/Styles noch stark. Wieso das Rad auch neu erfinden, wenn es gut läuft. Mich interessiert viel mehr, was DU :mrgreen: am Ende damit machen möchtest? Skripte für Spiele oder Programmerweiterungen? Hast du schon Ideen, wie du das Schreiben komplexer Programme besser gestalten möchtest als oben genannter 'Konkurrent'? ;)

Wünsche meinerseits:
- Zoom und xyScrolling via Maus a la Simulink (evt. hast du das auch schon, konnte es noch nicht testen)
- Hilfefenster a la LabView (Strg+H)

MFG
MIB
(hab alles, kann alles, weiß alles!!^^)

Bild
Benutzeravatar
Rings
Beiträge: 971
Registriert: 29.08.2004 08:48

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von Rings »

Sieht bisher gut aus, lässt sich schon fluffig bedienen.
NicTheQuick hat geschrieben:Besonders cool wäre ja eigentlich, wenn der Editor Code erzeugt und man ihn anpassen könnte für andere Programmiersprachen. Ich denke da zum Beispiel an eine Zusammenklickoberfläche für Mikrocontroller. Und am Ende fällt dann eben der C-Quellcode heraus.
Oder zum Bsp. Code für eine SPS (Speicher Programmierbare Steuerung) .

Am besten versuche mal das 'Code generieren' zu abstrahieren so das man evtl.
verschiedene Targets durch zum Bsp Nutzung von DLL's als Codegenerator angeben kann.
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von NicTheQuick »

Rings hat geschrieben:Am besten versuche mal das 'Code generieren' zu abstrahieren so das man evtl.
verschiedene Targets durch zum Bsp Nutzung von DLL's als Codegenerator angeben kann.
Am sinnvollsten wäre meiner Meinung nach der Export einer XML-Struktur, die den kompletten Graphen beschreibt. Daran kann man dann beliebige Konverter anhängen. Aber man bräuchte auch ein XML als Input für Pure Circuit, damit es weiß welche Objekte es überhaupt anlegen darf und was die Grundbausteine sind.
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von Nino »

@Stargate:
Interessantes Projekt!
NicTheQuick hat geschrieben:Am sinnvollsten wäre meiner Meinung nach der Export einer XML-Struktur, die den kompletten Graphen beschreibt. Daran kann man dann beliebige Konverter anhängen. Aber man bräuchte auch ein XML als Input für Pure Circuit, damit es weiß welche Objekte es überhaupt anlegen darf und was die Grundbausteine sind.
+1
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 6996
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Pure Circuit - Grafisches Programmieren (Node Editor)

Beitrag von STARGÅTE »

Hallo Leute,

um euch auf dem Laufenden zu halten hier mal eine neue Version zum rumspielen:
Download: PureCircuit190303.zip
In der Zip-Datei befindet sich der Editor, zwei Beispiel: Hilfe.xml und Hilfe2.xml die ihr mit dem Editor öffnen könnt und die freie Schriftart DejaVu die ich im Editor nutze!

Was gibts neues?
Nun, ich habe die Select-Rahmen (in den Grundzügen) eingearbeitet.
Dass heißt, ihr könnt jetzt Rahmen erstellen (wie alle Knoten aktuell noch über Rechtsklick -> Program -> Select) und/oder um Elemente herum ziehen. Es sind aktuell nur True/False Rahmen (andere kommen noch). Ihr könnt Rahmen verschacheltn, verschieben, ihr könnt Kabel an den Rahmen ziehen um "Tunnel" zu erzeugen wodurch die Daten fließen.
Außerdem werden nun Fehler ausgegeben (fehlende Verbindungen usw.).
Ein Beispiel ist in Help2.xml zu finden, was etwa so aussieht:
Bild

Viel Spaß beim ausprobieren.

Als nächstes werde ich dann Inputs und Output einbinden, also Gadgets die gefüllt oder gelesen werden können, also die Schnittstellen zur "Außenwelt". Außrdem baue ich die Funktionspalette ein, damit dieses umständliche Kontextmenü verschwindet.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten