Sprint-Layout 6.0 Plugin Library

OP #7119059
Guten Tag,

für ein internes Projekt habe ich eine in C geschriebene Plugin-Library 
für das PCB-CAD Programm ABACOM Sprint-Layout 6.0 entwickelt.
Die Plugin-Schnittstelle hatte ich vor einiger Zeit zusammen mit ABACOM 
entworfen und seitdem intern eingesetzt.

Eigene Plugins können komplette Platineninhalte oder Selektionen 
exportieren, importieren, generieren oder verändern.

Es ist immer noch einiges zu tun, aber die Basis steht.
Besonders fehlen aktuell noch:
- Dokumentation
- Tests
- Beispielprojekte
- GUI-Integration
- Konfiguration

Da das Projekt sonst unveröffentlicht bleiben würde und ich aktuell 
keine Zeit habe, mich um die obigen Punkte zu kümmern, veröffentliche 
ich jetzt die Bibliothek für nicht-kommerzielle Zwecke einfach "as-is". 
Vielleicht hat ja jemand Lust Sprint-Layout etwas zu automatisieren :-)

Der Code findet sich hier auf GitHub:
https://github.com/LaminoidStudio/SprintTrace

Durch die N/C-Klausel möchte ich mir v.A. nicht die Gelegenheit 
verbauen, die Software für eine mögliche kommerzielle Nutzung 
lizenzieren zu können.

Weiteres zu Sprint-Layout findet sich hier:
https://www.electronic-software-shop.com/sprint-layout-60.html

~ Benedikt
OP
bernte schrieb:
> evtl kannst du noch kurz erläutern wie man das installiert und
> bedient

Als Anwender kann man die Plugins in einem beliebigen Ordner ablegen und 
das aktive Plugin über 'Extras -> Plugin definieren' bestimmen.
Je nach Plugin-Typ (z.B. Plugin zum Export nach KiCAD, Plugin zum 
Vektorisieren von Bitmaps, ...) möchte man nun eine optionale Auswahl 
bestimmter Platinenelemente treffen, die man bearbeiten möchte (ohne 
Auswahl werden alle Elemente an das Plugin weitergereicht).
Das Plugin kann nun entweder die Elemente direkt verarbeiten oder eine 
GUI anzeigen, in der weitere Einstellungen getroffen werden können (zu 
vektorisierendes Bild auswählen, Ausgabedatei wählen, Skalierungsfaktor, 
...).
Schließlich kann das Plugin optional Änderungen an den Elementen zurück 
in die Platine schreiben.

Als Entwickler kann man die Bibliothek mittels CMake in eigene 
Plugin-Projekte einbinden und statisch linken.
Die Plugins sind grundlegend so aufgebaut:
1
#include <SprintTrace/plugin.h>
2
#include <SprintTrace/pcb.h>
3
#include <SprintTrace/elements.h>
4
#include <SprintTrace/primitives.h>
5
#include <SprintTrace/errors.h>
6

7
int main(int argc, const char* argv[])
8
{
9
  // Kommunikation zu Sprint-Layout herstellen und Daten laden
10
  sprint_require(sprint_plugin_begin(argc, argv));
11

12
  // Die Platine abholen
13
  sprint_pcb* pcb = sprint_plugin_get_pcb();
14

15
  // Verarbeiten von pcb.elements...
16

17
  // Programm beenden und Daten an Sprint-Layout zurückreichen
18
  sprint_require(sprint_plugin_end(SPRINT_OPERATION_REPLACE_RELATIVE));
19
  return 0; // Redundant, da sprint_plugin_end() intern exit() aufruft
20
}

Zusätzlich zur PCB werden einige weitere Parameter aus Sprint-Layout 
übernommen, wie z.B. die Sprache: sprint_language 
sprint_plugin_get_language(void);
Gast
Excelente library!

I have developed a plugin called SprintFont.
https://github.com/cdhigh/sprintFontRelease

Unlucky I cannot found any library available before I started, so I 
spent many time to write a lot of code to interact with Sprint Layout.
If I got your library before April 2022, maybe I would compile your 
library into a DLL and load in my project, that was much efficient.
Gast
I will release source code after sometime.
I been developed by using Python, and the comment of code is all 
Chinese.
There is no need to hide the source code of software developed in 
Python, because you can decompile it at any time, which is exactly the 
same as the source code. (only lack of comment)
Gast
I will release source code after sometime.
It's developed by using Python, and the comment of code is all
Chinese (it's useless to you).
There is no need to hide the source code of software developed in
Python, because you can decompile it at any time, which is exactly the
same as the source code. (only lack of comment)
>Der Code findet sich hier auf GitHub:
>https://github.com/LaminoidStudio/SprintTrace

Eine sogenannte "Good Practice" ist eine Kurzbeschreibung zum GitHub 
Repository.

Es sollte folgendermaßen aussehen:

1. What
Um welches Thema handelt es sich

2. Why
Warum wird die Software gebraucht, wie unterscheidet es sich von 
anderem, für was ist es gut.

3. How
Wie wird die Software angewendet und installiert.
>Die habe ich sonst auch, aber ich wollte das Projekt einfach
>veröffentlichen, bevor ich es vergesse. Danke für die Erinnerung, ich
>habe gerade eine kurze Beschreibung ergänzt.

Danke für die Beschreibung, so ist es schon einmal klarer.
Früher habe ich Eagle benutzt, mittlerweile eher KiCad. Sprint Layout 
kenne ich gar nicht. Vielleicht müsste man in der Beschreibung noch 
nachtragen, ob es nur unter Windows oder auch anderen Systemen läuft.
OP
Christoph M. schrieb:
> Vielleicht müsste man in der Beschreibung noch
> nachtragen, ob es nur unter Windows oder auch anderen Systemen läuft.

Ist ergänzt. SprintTrace läuft auf allen drei Platformen (Windows 7+, 
Linux und macOS), wenn nur Text-IO Dateien verarbeitet werden sollen.
Für den gehosteten 'regulären' Plugin-Modus ist jedoch Windows 
erforderlich.
OP

Benny G. schrieb:

Hi Benedikt, ich meinte eine ausführbare Datei die ich als Plugin einbinden kann. Oder verstehe ich dein Plugin falsch? Ich war an der soldermask cutout Funktion interessiert bzw neugierig was dahinter steckt.

Aus Neugier, was möchtest du mit der Soldermask Cutout-Funktion umsetzen?

Die Idee hinter der Plugin Library ist, dass man diese in ein eigenes Programm integrieren kann, um beliebige Aktionen mit den Layouts durchzuführen. Man kann Elemente ersetzen, löschen und durch den Benutzer einfügbar machen. Die Library übernimmt dabei alles (man braucht also nur ein paar Zeilen (statt einigen Tausend) um eigene Projekte umzusetzen.

dann habe ich dein Plugin tatsächlich falsch verstanden.

Ich suche nache einer Möglichkeit soetwas, wie hier auf dem Bild gezeigt, umzusetzen. Ja, mir ist bewusst das ist der Silkscreen, ich suche dennoch eine Möglichkeit wie ich Aussparungen in Form von Text einfügen kann.

Angehängte Dateien:
OP

Benny G. schrieb:

Ich suche nache einer Möglichkeit soetwas, wie hier auf dem Bild gezeigt, umzusetzen

Eine Lösung für das Problem wäre es, die Layer generell zu invertieren. Sprint-Layout kann das nicht direkt, aber man kann die Gerber entsprechend anpassen:

  1. Gerber im Texteditor öffnen
  2. Nach "%IPPOS*%" suchen
  3. "POS" durch "NEG" ersetzen
  4. Speichern

Ob das bei allen Fertigern funktioniert, kann ich nicht sagen.

OP

Benny G. schrieb:

Das klappt nicht. Die Suche findet nichts im Gerber File was ich ersetzen könnte.

Du kannst versuchen, die Zeile am Anfang hinzuzufügen.

Edit: Du hast noch ein Plugin zum Export zu KiCad erwähnt, wo gibt es das? Vielleicht lässt es sich dann über Umwege mit Kicad realisieren.

Das Plugin war mehr eine Empfehlung, was sich damit umsetzen lässt. Ich hatte damals darüber nachgedacht, es zu schreiben um Bauteile importieren zu können, bin aber nie dazu gekommen. Es macht mir weniger Arbeit, neue Footprints einfach selbst anzulegen.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 4 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.