Guten Abend allerseits
Jetzt ist es endlich soweit, ich habe eine erste Version meines Projekts auf SF hochgeladen und da dies mein erstes "ernsthaftes" Programm ist und ich kein Programmierer bin, bitte ich euch um eure Meinung zur Umsetzung.
Gleich vorweg: Erwartet von dem Programm noch nichts. Es ist so ziemlich die kleinstmögliche Version, um eine Vorstellung davon zu vermitteln, was es später mal machen soll. Es ist noch lange nicht fertig, es ist noch nichtmal in irgendeiner Art und Weise praktisch einsetzbar. Ich finde aber, es ist ein guter Zeitpunkt, um Kritik über die Architektur einzuholen, daher habe ich es jetzt schon veröffentlicht.
Zum Zweck des Programms:
Ich komme ja aus dem Hardwarebau, und da gibt es eine für mich äußerst lästige Arbeit: das Pflegen von Bauteilbibliotheken in EDA-Programmen. (Wer es nicht kennt: Electronic Design Automatisation, damit erstellt man Schaltpläne, Platinenlayouts und mehr oder weniger alles was man braucht um diese dann fertigen lassen zu können, im Prinzip das was CAD für Maschinenbauer ist.)
Programme wie Altium Designer können einem unheimlich vieles an Arbeit abnehmen wenn z.B. Dinge wie die Herstellernummer des Bauteils hinterlegt ist. Bisher habe ich dafür meist Exelscripte geschrieben oder viel Handarbeit angelegt, andere Entwicker sind da pragmatischer und verzichten auf die ganzen tollen Extras und nehmen die Umständlichkeiten in Kauf. Für mich sind beide Optionen inakzeptabel da ich einerseits penibel und akkurat bin, andererseits bin ich ein stockfauler Hund. Und Altium Designer ist ein nicht ganz billiges Werkzeug, das will gefälligst genutzt werden.
Also muß ein Werkzeug her, auf das der Rechner nun auch für die Bibliothekspflege geknechtet werden kann.
Ich erkläre am Besten an einem Beispiel: Dies ist das Datenblatt für eine Widerstandsserie von Yageo:
Dort steht gleich auf der ersten Seite, wie sich die Herstellernummer zusammensetzt.
1. Serienkürzel
2. Gehäuse (0402/0603/0805/1206)
3. Toleranz (0,1%; 0,25%; 0,5%; 1%)
4. Verpackung
5. Widerstandswert (variiert je nach Gehäusegröße)
Ziel ist es nun, eine Tabelle zu erhalten, in der ein paar Informationen über ein Bauteil enthalten sind. Der Benutzer soll frei wählen können welche Informationen er für relevant hält und was drinstehen soll. Gehäuse, Toleranz und Bauteilwert wären schonmal nützliche Informationen, die Herstellernummer wollen wir auch. Zusätzlich braucht es noch ein paar Parameter um Altium Designer mitzuteilen, wo es Schaltplansymbol und Footprint findet, und wir wollen auch das Datenblatt verlinken.
So in etwa soll es am Ende aussehen:
So in etwa...in Kurzform. Eine einzelne Widerstandsserie erzeugt gerne mal >100k Zeilen, und ich hab in meinen Bibliotheken ich glaub über 20 Parameter für jedes Bauteil drin.
Um euch zu zeigen wie das Programm arbeitet, hier ein kleines Minimalbeispiel:
1.:
Startet das Programm. Falls es mit Gradle nicht funktioniert (was leider gut sein kann), gibt es eine fertiges Kompilat. Die Ordner und Dateien wichtig, die .jar kann alleine nicht. Aktuell besteht das Programm im Wesentlichen aus zwei Tabs. Geht in den ersten Tab. Das Programm kann leider momentan nur über das Kontextmenü bedient werden.
2.:
Zuerst erstellt ihr ein neues Datenset. Gebt ihm irgendeinen Namen.
3.:
Noch ein Rechtsklick, diesmal fügt ihr eine neue Bauteileigenschaft hinzu. Laßt diese persistent, aber gebt ihr den Namen "Liste". Erstellt eine zweite persistente Eigenschaft und nennt sie "Konstante".
4.:
Wenn alles gut ging, könnt ihr dem Datenset jetzt einen Datenstempel zuweisen. Rechtsklick so, daß ihr Datenset und die Eigenschaft "Liste" trefft, und fügt einen Listenstempel hinzu. Danach öffnet sich ein Stempeleditor. In diesem tragt ihr ein:
1
2
3
und klickt auf OK.
Jetzt fügt ihr auf die gleiche Weise einen Konstantenstempel ein, als Werte gebt ihr jetzt aber
A
B
ein und klickt wieder auf OK.
6.:
Wenn bis hierher alles gut lief, müßtet ihr jetzt (in zweifellos verbesserungsbedürftiger Weise) ein Datenset mit zwei Bauteilstempeln und deren Parametrisierung angezeigt bekommen. Es ist Zeit, daraus eine Tabelle zu machen. Rechtsklick -> Bauteilwerte generieren. Danach seht ihr im zweiten Tab (der war vorher leer) eine Tabelle wie:
Es ist zwar nur ein kleines Beispiel, aber ich denke, die meisten von euch bekommen jetzt eine Idee davon, wie ich damit zu großen Bauteiltabellen kommen will. Es gibt nochmehr Stempelarten, jede erzeugt Werte auf eine andere Weise. Es können übrigens auch noch mehr Datensets erzeugt werden. Mehr als diese Tabelle im zweiten Tab ist aktuell noch nicht zu sehen, es gibt noch keine Exportfunktion...wie gesagt, kleinstmögliche Demonstratorversion. Aber ich denke, als Begutachtungsgegenstand ist es ausreichend.
Hier ist das Projekt:
sourceforge.net
Zunächst einmal...
...würde ich mich sehr freuen, wenn ihr euch meine Programmstruktur anschaut. Wie gesagt, es ist mein erstes Programm, ich hab vorher in Java nur Kleinkram oder Übungen gemacht. Ich habe mich fast immer aus bestimmten Gründen bestimmte Wege eingeschlagen, aber ohne Erfahrung sind solche Abschätzungen nur von wenig Wert. Daher würde mich eure Kritik und Denkanstöße interessieren, warum ich was wie gemacht habe würde ich im Verlauf des Threads näher ausführen. Der Post ist lang genug, und ich kriege das alles heute Abend sowieso nicht mehr zusammen.
Was noch werden soll
Extras und Funktionen, die ich früher oder später noch hinzufügen will (länsgt nicht vollständig):
-Bibliotheksbrowser (ist aktuell in Arbeit):
Das, was jetzt in den beiden Tabs zusammengefaßt ist, wird zu einer Bibliotheksseite gebündelt. Viele solcher Bibliotheksseiten sollen als Baumstruktur angeordnet werden können.
-Weitgehend vollständige Bedienung über die Tastatur
-Toolbar
-...
Jetzt ist es endlich soweit, ich habe eine erste Version meines Projekts auf SF hochgeladen und da dies mein erstes "ernsthaftes" Programm ist und ich kein Programmierer bin, bitte ich euch um eure Meinung zur Umsetzung.
Gleich vorweg: Erwartet von dem Programm noch nichts. Es ist so ziemlich die kleinstmögliche Version, um eine Vorstellung davon zu vermitteln, was es später mal machen soll. Es ist noch lange nicht fertig, es ist noch nichtmal in irgendeiner Art und Weise praktisch einsetzbar. Ich finde aber, es ist ein guter Zeitpunkt, um Kritik über die Architektur einzuholen, daher habe ich es jetzt schon veröffentlicht.
Zum Zweck des Programms:
Ich komme ja aus dem Hardwarebau, und da gibt es eine für mich äußerst lästige Arbeit: das Pflegen von Bauteilbibliotheken in EDA-Programmen. (Wer es nicht kennt: Electronic Design Automatisation, damit erstellt man Schaltpläne, Platinenlayouts und mehr oder weniger alles was man braucht um diese dann fertigen lassen zu können, im Prinzip das was CAD für Maschinenbauer ist.)
Programme wie Altium Designer können einem unheimlich vieles an Arbeit abnehmen wenn z.B. Dinge wie die Herstellernummer des Bauteils hinterlegt ist. Bisher habe ich dafür meist Exelscripte geschrieben oder viel Handarbeit angelegt, andere Entwicker sind da pragmatischer und verzichten auf die ganzen tollen Extras und nehmen die Umständlichkeiten in Kauf. Für mich sind beide Optionen inakzeptabel da ich einerseits penibel und akkurat bin, andererseits bin ich ein stockfauler Hund. Und Altium Designer ist ein nicht ganz billiges Werkzeug, das will gefälligst genutzt werden.
Also muß ein Werkzeug her, auf das der Rechner nun auch für die Bibliothekspflege geknechtet werden kann.
Ich erkläre am Besten an einem Beispiel: Dies ist das Datenblatt für eine Widerstandsserie von Yageo:
Dort steht gleich auf der ersten Seite, wie sich die Herstellernummer zusammensetzt.
1. Serienkürzel
2. Gehäuse (0402/0603/0805/1206)
3. Toleranz (0,1%; 0,25%; 0,5%; 1%)
4. Verpackung
5. Widerstandswert (variiert je nach Gehäusegröße)
Ziel ist es nun, eine Tabelle zu erhalten, in der ein paar Informationen über ein Bauteil enthalten sind. Der Benutzer soll frei wählen können welche Informationen er für relevant hält und was drinstehen soll. Gehäuse, Toleranz und Bauteilwert wären schonmal nützliche Informationen, die Herstellernummer wollen wir auch. Zusätzlich braucht es noch ein paar Parameter um Altium Designer mitzuteilen, wo es Schaltplansymbol und Footprint findet, und wir wollen auch das Datenblatt verlinken.
So in etwa soll es am Ende aussehen:
Widerstandswert | Toleranz | Gehäuse | Schaltplansymbol | Footprint |
1kΩ | 1% | 0603 | C:/lib/Symboldatei.lib | C:/lib/Footprints.lib |
1kΩ | 1% | 0805 | C:/lib/Symboldatei.lib | C:/lib/Footprints.lib |
1kΩ | 1% | 1206 | C:/lib/Symboldatei.lib | C:/lib/Footprints.lib |
So in etwa...in Kurzform. Eine einzelne Widerstandsserie erzeugt gerne mal >100k Zeilen, und ich hab in meinen Bibliotheken ich glaub über 20 Parameter für jedes Bauteil drin.
Um euch zu zeigen wie das Programm arbeitet, hier ein kleines Minimalbeispiel:
1.:
Startet das Programm. Falls es mit Gradle nicht funktioniert (was leider gut sein kann), gibt es eine fertiges Kompilat. Die Ordner und Dateien wichtig, die .jar kann alleine nicht. Aktuell besteht das Programm im Wesentlichen aus zwei Tabs. Geht in den ersten Tab. Das Programm kann leider momentan nur über das Kontextmenü bedient werden.
2.:
Zuerst erstellt ihr ein neues Datenset. Gebt ihm irgendeinen Namen.
3.:
Noch ein Rechtsklick, diesmal fügt ihr eine neue Bauteileigenschaft hinzu. Laßt diese persistent, aber gebt ihr den Namen "Liste". Erstellt eine zweite persistente Eigenschaft und nennt sie "Konstante".
4.:
Wenn alles gut ging, könnt ihr dem Datenset jetzt einen Datenstempel zuweisen. Rechtsklick so, daß ihr Datenset und die Eigenschaft "Liste" trefft, und fügt einen Listenstempel hinzu. Danach öffnet sich ein Stempeleditor. In diesem tragt ihr ein:
1
2
3
und klickt auf OK.
Jetzt fügt ihr auf die gleiche Weise einen Konstantenstempel ein, als Werte gebt ihr jetzt aber
A
B
ein und klickt wieder auf OK.
6.:
Wenn bis hierher alles gut lief, müßtet ihr jetzt (in zweifellos verbesserungsbedürftiger Weise) ein Datenset mit zwei Bauteilstempeln und deren Parametrisierung angezeigt bekommen. Es ist Zeit, daraus eine Tabelle zu machen. Rechtsklick -> Bauteilwerte generieren. Danach seht ihr im zweiten Tab (der war vorher leer) eine Tabelle wie:
Liste | Konstante |
1 | A |
2 | A |
3 | A |
1 | B |
2 | B |
3 | B |
Es ist zwar nur ein kleines Beispiel, aber ich denke, die meisten von euch bekommen jetzt eine Idee davon, wie ich damit zu großen Bauteiltabellen kommen will. Es gibt nochmehr Stempelarten, jede erzeugt Werte auf eine andere Weise. Es können übrigens auch noch mehr Datensets erzeugt werden. Mehr als diese Tabelle im zweiten Tab ist aktuell noch nicht zu sehen, es gibt noch keine Exportfunktion...wie gesagt, kleinstmögliche Demonstratorversion. Aber ich denke, als Begutachtungsgegenstand ist es ausreichend.
Hier ist das Projekt:
jCLS
Download jCLS for free. This project is under hard development and not intended for use now. None

Zunächst einmal...
...würde ich mich sehr freuen, wenn ihr euch meine Programmstruktur anschaut. Wie gesagt, es ist mein erstes Programm, ich hab vorher in Java nur Kleinkram oder Übungen gemacht. Ich habe mich fast immer aus bestimmten Gründen bestimmte Wege eingeschlagen, aber ohne Erfahrung sind solche Abschätzungen nur von wenig Wert. Daher würde mich eure Kritik und Denkanstöße interessieren, warum ich was wie gemacht habe würde ich im Verlauf des Threads näher ausführen. Der Post ist lang genug, und ich kriege das alles heute Abend sowieso nicht mehr zusammen.
Was noch werden soll
Extras und Funktionen, die ich früher oder später noch hinzufügen will (länsgt nicht vollständig):
-Bibliotheksbrowser (ist aktuell in Arbeit):
Das, was jetzt in den beiden Tabs zusammengefaßt ist, wird zu einer Bibliotheksseite gebündelt. Viele solcher Bibliotheksseiten sollen als Baumstruktur angeordnet werden können.
-Weitgehend vollständige Bedienung über die Tastatur
-Toolbar
-...