Forum: Projekte & Code Sprint-Layout 6.0 Plugin Library


von Benedikt M. (bmuessig)


Lesenswert?

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

: Bearbeitet durch User
von bernte (Gast)


Lesenswert?

evtl kannst du noch kurz erläutern wie man das installiert und bedient

von Benedikt M. (bmuessig)


Lesenswert?

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);

: Bearbeitet durch User
von cdhigh (Gast)


Lesenswert?

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.

von Benedikt M. (bmuessig)


Lesenswert?

cdhigh schrieb:
> Excelente library!

Thanks!

> I have developed a plugin called SprintFont.

Very well done! I like the explanatory drawings. Concerning features, 
you’ve done exactly what I was planning to do and more. Are you planning 
on releasing the source code?

von cdhigh (Gast)


Lesenswert?

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)

von cdhigh (Gast)


Lesenswert?

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)

von Cdhigh C. (cdhigh)


Lesenswert?

I released source code of SprintFont
https://github.com/cdhigh/sprintFont

(Don't complain, the comments are all in Chinese)

von Benedikt M. (bmuessig)


Lesenswert?

Cdhigh C. schrieb:
> I released source code of SprintFont
> https://github.com/cdhigh/sprintFont
>
> (Don't complain, the comments are all in Chinese)

Very nice, thanks for sharing!

von Christoph M. (mchris)


Lesenswert?

>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.

von Benedikt M. (bmuessig)


Lesenswert?

Christoph M. schrieb:
> Eine sogenannte "Good Practice" ist eine Kurzbeschreibung zum GitHub
> Repository.

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.

: Bearbeitet durch User
von Christoph M. (mchris)


Lesenswert?

>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.

von Benedikt M. (bmuessig)


Lesenswert?

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.

von Benedikt M. (bmuessig)


Lesenswert?

Ab jetzt gibt es Unterstützung für die neue 
Soldermask-Cutout-Eigenschaft, die mit dem letzten Update dazugekommen 
ist

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.