yes, that was the same problem I had when I created my program.
The PDF is missing the background information that you would have in the .qet file to enter the connection.
That's why I wrote in the description I included in my post that the PDF page must be the same as the page in the schematic.
This reads out, for example. "22.1" and then extracts the 22 and creates the reference to p. 22.
I would have preferred it differently, but I couldn't think of a way to create the actual connection.

Translated with DeepL.com (free version)

acolomb wrote:

Wäre es zu viel verlangt, den Quellcode auf GitHub oder ähnlich bereitzustellen?

PLC-User oder ich?

I have tried the tool from Alfonso.
I have adapted my cross-reference type for this.
It did not work for me that the program recognizes gaps in the circuit diagram. In other words, if page 12 was in the 10th position, the Alfonso program would jump to page 12. The direct connections are not recognized. In this respect, I can achieve the same with my tool and will not go to the trouble of trying to include the X.Y format.

Translated with DeepL.com (free version)

You are welcome.
I don't know why it doesn't run on Ubuntu.

Oh, I don't know exactly whether it's row or column. I guess it is column.
My cross-references are numerical. For page 17 column 9 the cross-reference would be 17.9, for example. So it must be column?

I think I will try to integrate this format into the program. I don't know if I can do it.
But I also don't know to what extent Alfonso is still online here.

The app image is attached. I could not upload the folder structure and the .sh file to create an appimage because it is too big (262MB)
Unfortunately I could not test the function because my format of cross-references is not supported.
I am using Y.X. (page.column)
Alfonso could you add this function?

I will take a look if i can make an appimage. but it will take a some time before i have time to do that.

Maybe take a look at my update
https://qelectrotech.org/forum/viewtopic.php?id=2938

there is the complete Code with the .sh and maybe its easyer to see how it works.

Moin Stefan,

ich habe meine neue Version hochgeladen.
https://qelectrotech.org/forum/viewtopic.php?id=2938

Evtl hilft dir das jetzt weiter.

59

(3 replies, posted in Scripts)

Ich habe die Zusatzfunktionen geupdated.
Die Änderungen sind:
Eine verbesserte Erkennung der Klemmen in der Zeichnung.
Kabelliste und Klemmenplan können direkt in die .qet Datei integriert werden.
Man kann Seiten löschen. Sehr von Vorteil, wenn man viele Seiten auf einmal löschen will z.B. um ein bereits erstellte Klemmenplan zu löschen um diesen nach Änderungen dann über die Funktion in meinem Tool zu zu aktualisieren.

Translate:
I have updated the additional functions.
The changes are:
Improved recognition of the terminals in the drawing.
Cable list and terminal diagram can be integrated directly into the .qet file.
You can delete pages. This is very useful if you want to delete many pages at once, e.g. to delete an already created terminal diagram and then update it after changes using the function in my tool.
The source code and my components are attached.

i didnt know the Modul. It seems its not integrated.

if u look into my .sh file.

at point 4 he copy the venv. thats where the python moduls are. That has to be copyed too.

maybe the problem is because u did:

pip uninstall fitz
pip install --upgrade --force-reinstall pymupdf

and its not integrated it the venv.

plc-user wrote:
Kellermorph wrote:

Die Vorgehensweise ist nur so ziemlich die selbe, (...).

... im Vergleich zu welcher anderen Vorgehensweise?

Kellermorph wrote:

Irgendetwas scheint da halt noch im argen zu sein.

Ja: Deine Vorgehensweise!
Man muss Regeln befolgen, damit etwas wie geplant funktioniert!

Konsole aufmachen, cd zu wechseln des Ordners, das tool händisch reinschreiben etc.

Ja ich habe es jetzt herausgefunden. Danke für die Spitzenerklärung, wo der Fehler war!
Es war einfach nur der Punkt vor dem/
Und genau aus diesem Grund verabscheue ich so n Konsolenzeug.

plc-user wrote:
Kellermorph wrote:

Ich mache das etwas anders.

Du merkst selber, daß das so wie Du es machst, NICHT funktioniert?!?

Kellermorph wrote:

Ich bin absolut kein Freund vom Terminal.

Dann ist Dir mit Kommandozeilen-Tools nicht zu helfen...!

Die Vorgehensweise ist nur so ziemlich die selbe, nur das hier dann einiges noch grafisch abgenommen wird und man nicht alles tippen muss.

Absolut richtig! Deshalb meide ich die auch immer.
Wollte dir nur den Gefallen tun und es testen.
Irgendetwas scheint da halt noch im argen zu sein.

Ich mache das etwas anders. Ich bin absolut kein Freund vom Terminal.

Ich habe über die Eigenschaften kontrolliert, ob es ausführbar ist. War es schon.

Dann zieh ich dein Programm ins Terminal, welches ich extra zu der .qet Datei gelegt habe. Dadurch passt der Pfad.
Dann kopiere ich deinen Befehl rein und passe den Datei Namen an.

Wenn ich dann Enter drücke kommt nur das größer als Zeichen und es passiert nichts weiter.

und jetzt hängt der ca ein paar min so fest:

/QElectrotech/Projekte/QET_Klemmenplan -l Vorlage_MSR.qet > Klemmen.txt
>

Ich habe sogar extra das Leerzeichen in dem Namen der QET-Datei durch einen _ ersetzt aber auch da kommt keine Besserung.
In dem Ordner kommt keine .txt Datei.

plc-user wrote:

Welche Ausgabe erwartest Du, wenn die Ausgabe in die Datei "Klemmen.txt" umgeleitet wurde?

Bei demselben Aufruf erhalte ich eine "Klemmen.txt" mit etwa 57kB Inhalt. (vgl Anhang)

Es erfolgt KEINE unnötige Ausgabe auf der Konsole!
Wenn das Programm bei dem gezeigten Aufruf erfolgreich durchläuft, kommt einfach nur das Prompt wieder und die Datei ist mit dem gewünschten Inhalt gefüllt!

Das sich der Konsolenaufruf beendet und ich dann eine .txt Datei in dem Ordner erscheint. beides nicht geschehen.

u can do it with appimagetool.

I build an .sh with all.
you have to adjust the paths etc. in there.

oh damn. copy mistake.

/QET_Klemmenplan -l Vorlage_MSR.qet >Klemmen.txt
>

I got this result.

did u build an appimage?

...QElectrotech/Projekte/QET_Klemmenplan -l Vorlage_MSR.qet Klemmen.txt
>


Bei mir kommt nur das und gibt keine Ausgabe.

Beim händischen Eintragen bin ich raus, sorry. Das ist viel zu aufwändig. Dann bleibe ich eher bei meinem Tool.
Das steht auch so weit. Ich muss gerade nur noch eine Lösung für eine gebrückte Klemmleiste finden. Aber ich denke, dass ich hier in QET passend zeichnen werde, damit die Funktion sauber klappt.

The Program from Alfonos? No i didnt? Why are u asking?

plc-user wrote:

Was frag' ich auch, was ihr wollt... nomicons/sad

Kellermorph wrote:

Wenn ich mein Programm ganz fertig habe, (...) und dann auf c++ anpassen?

Nicht mit mir!
Ich werde mich bestimmt nicht in generierten Python-Krempel einarbeiten und das dann auf C++ umschreiben!

stefan.helmert wrote:

Also, es würde eine Tabelle aller Betriebmittel rauskommen.

Auch: nein!
Gefragt war nach einer Liste für Klemleisten!
Allein bei Brückern sind wir wieder beim Kleimmleisten-Manager von Joshua: Woanders sind die Brücken nicht definiert!
Wenn es nix zum Auslesen gibt, kann man keine Informationen herzaubern!

Also könnte als "Übergangs-Tool" sowas herauskommen, was acolomb bereits beschrieben bzw. angefangen hat:
Ein Freitext-Feld mit den Informationen, die im Moment nicht vom Klemmleisten-Manager geliefert werden.

Und beim automatischen Herausfinden von "Quelle" und "Ziel" einer Verbindung sind wir wieder an dem Punkt, den ich in einen anderen Post bereits ansatzweise beschrieben habe.
Dazu habe ich mal einen kleinen Plan erstellt und das Problem im Plan beschrieben. Hoffentlich erkennt ihr es!

evtl habe ich mich doof ausgedrückt.
Ich meinte in die Richtung:
Das was das Programm raus schmeißt, ist ok oder braucht noch Änderung xy. Und von da gehts dann los. So dass man einen gemeinsamen Weg findet.

Ich habe mir eine Formel überlegt, wie das Programm die Brücke findet (im Prinzip wie es WSCAD macht).
Ich definiere die Verbindungen mit einer Funktion z.B. 0VAC int
Das Programm geht jetzt die Conductoreinträge durch.
An Klemme X4:1 ist die Funktion 0VAC X4. An Klemme X4:5 ist auch 0VAC X4. Dann muss dort eine Brücke rein.
Bei Klemme X4:2 ist 24VAC X4 und an Klemme X4:6 auch. Dann muss dort auch eine Brücke sein. Allerdings versetzt zu der vorherigen.
Die Brücken stelle ich momentan allerdings nur mit Punkten dar und nicht mit extra Strichen.
Hier muss jetzt der Schaltschrankbauer nachher selbst gucken wie es ganz genau passt(max länge vom Brückenstecker etc.)

Quelle habe ich noch Probleme mit den Slave-Elementen. Deshalb habe ich es erstmal raus genommen.
Das Ziel funktioniert allerdings. Hier werden wieder die Conductoreinträge durchgegangen und dann nachher mit dem y-Wert verglichen.

Da du aber viel tiefer im Thema bist, solltest du evtl vorgeben, wie wir vorgehen könnten.
Aber deshalb meinte ich meine Funktion um eine Grundlage zu finden, welchen Weg wir evtl gehen wollen / können.

plc-user wrote:

Zum Thema "Klemmen neu nummerieren":
Das ist etwas, was nicht jeder Anwender braucht oder will! Das sollte eine Funktion sein, die nur auf Anfrage ausgeführt wird und hat erstmal nichts mit der Ausgabe einer Klemmenliste zu tun, finde ich.

Zum Thema "Abzweige", "Verbinder", "Splices", "Sprünge", etc.:
Aus meiner Sicht: Eine Pest!!!
Die sind als Bauteil verfügbar und als Klemmen definiert, sind aber nur für die grafische Darstellung in der Zeichnung nutzbar!
Es sind keine realen Bauteile, die auch das Erstellen eines Kabelplans total unmöglich machen: Wie soll man automatisch unterscheiden, ob das eine reale Klemme ist, oder einfach nur vergessen wurde, ein BMK zu vergeben?
Unter anderem deswegen und wegen der Möglichkeit mehr als einen Leiter an Verweis-Elementen anzubinden, habe ich die Software-Erstellung für einen Kabelplan (vorerst) verworfen: Man bekommt nicht zuverlässig heraus, von wo nach wo ein Draht gezogen werden kann, wenn im Schaltplan z.B. an einem Verweis mehr als ein Leiter angebunden ist und der Ziel-Verweis auch mit mehr als einem Leiter verbunden ist.
Das sollte meiner Meinung nach von QET unterbunden werden, dass dort mehr als ein Leiter angebunden werden kann! Aber das ist ein anderes Thema und Zukunftsmusik...

Abzweige, Splices und Sprünge sollten automatisch von QET erstellt werden und nur grafische Elemente (nicht im Sinne von "eingefügtes Bauteil"!) sein! Aber auch das ist Zukunftsmusik...!

Zurück zum Thema Klemmenliste:
Welche Informationen brauchen wir für die Liste?
Und können wir (vorerst) mit wenig manueller Nacharbeit leben?
Dann würde ich eine html-Tabelle aus den vorhandenen Klemmen erstellen, die dann manuell in ein Textfeld eingefügt werden kann. (vgl. Ansatz von acolomb)

Natürlich ist das nur auf Wunsch.
Jetzt kann man die Funktion separat durch mein Tool abrufen, wenn man will.

Ich finde, dass die Abzweige super sind. Es sollte aber dafür eine expliziten Bauteiltyp geben. Das würde es einfacher machen.
Man muss in diesem Fall halt sauber zeichnen, dann klappt es. Läuft bei mir ja schon.

Die Informationen, die man braucht, sind auf jeden Fall Klemmleistennamen und Klemmennummer, wie diese gebrückt werden. Im besten Fall internes und externes Ziel und wenn angeschlossen welches Kabel, welcher typ von Kabel.

Wenn ich mein Programm ganz fertig habe, sollen wir es uns mal zusammen angucken? Gucken ob man damit zufrieden ist und was mehr / weniger soll und dann auf c++ anpassen?

Ich habe das überarbeitet. Jetzt wurde es auch in dem Beispielprojekt von stefan.helmert erkannt.

ich bin gerade noch dran, dass man die Listen direkt in qet integrieren kann.
Danach kann ich ein Update hochladen.
Ein Problem, dass ich noch lösen muss sind gebrückte Klemmen z.B. für XN. Vermutlich muss ich diese in QET anders zeichnen.

Eine Funktion die ich dann auch noch ergänzen wollte, ist dass man massenhaft Seiten löschen kann. Gerade wenn man schon so viele Seiten für die Listen drin hat, dass man nicht jede einzeln anklicken muss.

plc-user wrote:

@stefan.helmert:
Ich weiß nicht, was Du als Ausgabe errwartest, stefan!
Das liefert mein Programm mit Deiner Datei:

Label | Position | Type | LED | Function | Function | Text | Tension/Protocol
-X1:22 | 1-E5 | generic | 0 | generic |  | -W1 | 
-X1:23 | 1-E12 | generic | 0 | generic |  | -W1 | 

Wie ihr seht, ist inzwischen auch die Position als Folio-/Zeile/Spalte enthalten.
Das wird ohne weiteres zutun als gültige Tabelle von LibreOffice Calc geöffnet, wenn es als *.csv gespeichert ist!

@Kellermorph:
In der qet-Datei liegen die Klemmen unabhängig von der im Programm eingestellten Sprache.
Deswegen sollte esauch für ein solches Tool irrelevant sein, welche Sprache eingestellt ist,..
Das muss jedenfalls das Ziel sein und so bin ich an die Aufgabe rangegangen.

Mir ist wieder eingefallen, weshalb ich nach Klemmen abfrage.
Ich benutze im Plan selbst gebaute Abzweigungen. Diese sind Bauteiltechnisch auch als Klemme definiert. Und damit die nicht in der Liste erscheinen, habe ich die damit raus gefiltert.
Schöner wäre evtl einfach zu gucken, dass man denen kein BMK gibt und man dann die mit einem leeren Label raus filtert. Dann dürfte das klappen.

plc-user wrote:
Kellermorph wrote:

Ich habe in meinen Zusatzfunktionen die Funktion von Klemmen durchnummerieren drin.

???
Die Klemmen werden doch vom Benutzer oder einer automatischen Regel innerhalb von QET durchnummeriert.
Erstellst / ersetzt Du das Label (BMK) damit?
Nach welchem Schema nummerierst Du die Klemmen?
Eine laufende Nummer kann ich auch leicht hinzufügen, wenn es das sein sollte...

So wie ich es in dem Post beschrieben habe.
Die Funktion geht die ganze .qet Datei durch und sortiert die Klemmen nach dem Teil vom BMK, welcher vor dem Doppelpunkt steht. Der Wert vor dem Doppelpunkt bleibt bestehen und der Wert nach dem Doppelpunkt wird durchnummeriert.
Die Nummerierung ist nach dem Prinzip:
1. Seite.
2. auf der Seite dann nach X Position von links nach rechts. Sollten 2 Klemmen den gleichen x-Wert haben wird dann die Klemme mit dem niedrigen y-Wert genommen.
3. Es werden nur nummerische Werte angepasst. z.B. N und PE bleiben erhalten und werden auch nicht mitgezählt. Wenn man jetzt z.B. 5 Klemmen hat die von 1 -4 nummeriert sind und am Ende ist PE und dann kommen die nächsten 5 Klemmen, geht es mit Wert 5 weiter.
4. Die Nummerierung startet bei jedem neuen Teil vor dem Doppelpunkt neu. Sprich -X1 startet bei 1 und geht z.B. bis 36. -X2 würde wieder bei 1 starten usw.

Wie vorher schon einmal geschrieben, habe ich für mich dann noch den Teil hinter dem Doppelpunkt in interne Nummer eingetragen, da ich eine andere Darstellung der Klemmen bevorzuge.

Das ist eine klassische Funktion von z.B. WSCAD die ich damit nachgebaut habe.

Das hat den Vorteil, dass ich mir am anfang nur einmal die Mühe machen muss und die Klemmen "sauber" vor dem Doppelpunkt definieren muss.
Dann kann ich mir den entsprechenden Block einfach nehmen und kopieren. Jetzt stehen da die gleichen Nummern drin. Ist mir aber egal, da ich nachher einmal die Funktion durchlaufen lasse und alle sauber nummeriert habe.
Das spart sehr viel Zeit und man muss nicht so aufmerksam beim platzieren der Klemmen sein.

Ich hoffe, du konntest es verstehen.