mikrocontroller.net

Forum: Platinen GerbMerge Gerber Editor


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Bachmann (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

habe Gerbmerge  entdeckt und möchte nun mit Eagle erstellte Gerberdaten 
aus zwei Leiterplatten zusammensetzen.

Mein Problem ist nur das ich nicht weiß wie.

Installiert ist folgendes

Python 2.6
SimpleParse 2.1.1
Gerbmerge 1.6

Es gibt auch einen testdata Ordner mit Makefile und dem aus Eagle 
bekannten
Hexapod board.

Hat jemand von euch Erfahrung mit Gerbmerge und könnte mir da etwas auf 
die Sprünge helfen?

Gruß

von Karl-Heinz K. (karl-heinz_k)


Bewertung
1 lesenswert
nicht lesenswert
Die Frage ist schon älter, da sie aber Google immer wieder ausspuckt, 
will ich kurze eine Minimalantwort ergänzen:

Man muss mit seinem Platinenlayoutprogramm Gerberfiles erstellen.
Außerdem sollte eine Bohrdatei (Position und Durchmesser der Bohrungen) 
exportiert werden.

Diese dienen Gerbmerge als Eingabewerte.

Vor dem Aufruf von gerbmerge.py muss für jedes Projekt eine layout.cfg 
Datei angelegt werden. Dazu wählt man am besten eines der Beispiele aus 
und passt die Vorgaben sowie die Namen zu den eigenen Files an.

Der Aufruf ist dann relativ einfach:

Kommandozeile (hier Linux: bash):

python pfad/gerbmerge.py layout.cfg

Damit wird der automatische Modus gestartet. Es gibt noch andere Modi, 
die sind im Manual beschrieben.

Von Gerbmerge gibt es einige Forks:

https://github.com/space-age-robotics/gerbmerge-patched (Support für 
Seeed Studio outlines)
https://github.com/provideyourown/gerbmerge (added metric support)
https://github.com/kkunzelm/gerbmerge (Support Seeed Studio und speziell 
Kicad Gerber/Drill Files, die mit metrischen Einheiten exportiert wurden 
(mm))
https://github.com/digistump/gerbmerge3 (für Python 3.x)

Man müsste diese Forks mal alle zusammenführen...

Viele Grüße

Karl-Heinz

von Bernd W. (berndwiebus) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hallo Karl-Heinz k.

Karl-Heinz K. schrieb:

> Die Frage ist schon älter, da sie aber Google immer wieder ausspuckt,
> will ich kurze eine Minimalantwort ergänzen:

Herzlichen Dank!

Ich verlinke Deine Antwort hier hier mal mit 
https://www.mikrocontroller.net/articles/Gerber-Tools#Gerber_Tools

> Man müsste diese Forks mal alle zusammenführen...

Wirklich!

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de

von Tasso (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Guten Morgen,

nun .. ich habe zu dem GerbMerge-Skript noch eine GUI in Delphi 
gestrickt und einige Ergänzungen vorgenommen (Passmarken für 
Fingertester, Format 3.3 metrisch fehlerbehoben, ...).
Nun bin ich aber Mechatroniker und programmiere entsprechend - den Zweck 
erfüllt's, schön ist's aber nicht. Mit GitHub werde ich auch nicht so 
recht grün ..

Vielleicht findet sich ja jemand, der meine Änderungen mal so mergen 
kann / will wie es ein Informatiker (statt einem Mechatroniker) tun 
würde.

Falls sich in Berlin ein Programmierer findet, der da einsteigen will - 
ich habe noch ein paar Ideen, wie der derzeitige Algorithmus deutlich 
verbessert werden kann - die Umsetzung scheitert aber an meinen 
Programmierkenntnissen.


Viele Grüße,
Tasso Mulzer

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte letztens für einen Batch GerbMerge angesehen, war damit
aber nicht grün geworden.

Deren Gerber-Parser ist einfach so schmalspurig auf irgendwelche
Formate gestrickt, die ein ganz bestimmtes EDA-Tool gerade rauswirft,
statt sich an der Gerber-Spec zu orientieren.

Am Ende war ich bei gerbv gelandet.  In der aktuellen Version (die
es leider auch nur als git-Repo gibt) kann man damit einigermaßen
gut interaktiv die Batches zusammenstellen.  Ein wenig fummelig ist
es trotzdem noch, aber der große Vorteil ist, dass die Parser in
gerbv sich tatsächlich an den Specs orientieren und damit so ziemlich
alles parsen, was herumkreucht und fleucht.  (Bei Excellon muss man
ggf. halt das exakte Format mit der Hand einstellen, falls die
Heuristik versagt.)

Anbei ein Screenshot des Nutzens, den ich damit zusammengestellt
und fertigen lassen habe.  Der Input bestand aus 10 verschiedenen
Einzel-Designs (teilweise mehrfach eingebaut) von vier verschiedenen
Leuten und entsprechend verschiedenen EDA-Systemen.

von Georg (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Anbei ein Screenshot des Nutzens

Nett, aber wie werden da die Steckkontakte vergoldet?

Georg

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Georg schrieb:
> Nett, aber wie werden da die Steckkontakte vergoldet?

Sind keine.  Das ist der Nachbau von HP10466A-Tastköpfen, da werden
an den Enden Steckverbinder aufgelötet.

von Gerd E. (robberknight)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Anbei ein Screenshot des Nutzens, den ich damit zusammengestellt
> und fertigen lassen habe.  Der Input bestand aus 10 verschiedenen
> Einzel-Designs (teilweise mehrfach eingebaut) von vier verschiedenen
> Leuten und entsprechend verschiedenen EDA-Systemen.

Fehlen da nicht die Stege zwischen den einzelnen Platinen um die 
zusammenzuhalten?

Oder vereinzelt die schon der Fertiger für Dich?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Gerd E. schrieb:
> Oder vereinzelt die schon der Fertiger für Dich?

Die Stege setzt der Fertiger.  Der macht das besser als ich, der
setzt da auch noch 'ne Reihe feiner Bohrungen mit dran.

von Gerd E. (robberknight)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Die Stege setzt der Fertiger.  Der macht das besser als ich, der
> setzt da auch noch 'ne Reihe feiner Bohrungen mit dran.

Ich setze die lieber selber, dann sind sie an den richtigen Positionen.

Denn der Fertiger weiß nicht unbedingt an welchen Stellen die Reste der 
Stege ein Problem werden können und an welchen nicht.

Ich hatte mal eine Platine da hat der Fertiger die Stege definiert. Und 
just genau über einen Steg kamen 90°-gewinkelte Stecker die über den 
Platinenrand überstehen. Der Bestücker hat geflucht diesen Steg dann 
nach der Bestückung zu trennen ohne den Stecker zu beschädigen.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Gerd E. schrieb:
> Ich setze die lieber selber

Ich inzwischen nicht mehr, nachdem ich bemerkt habe, dass der
Fertiger das einfach viel besser hinbekommt als ich.  Die wissen,
welche Abstände sie brauchen, und die Reihe von 0,2er (oder was
weiß ich, wie klein) Bohrungen, die sie an die Ränder der Stege
setzen, hätte ich mir so nicht getraut.

Ist aber alles für manuelles Bestücken zu Hause.

von bingo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Anbei ein Screenshot des Nutzens, den ich damit zusammengestellt
> und fertigen lassen habe.  Der Input bestand aus 10 verschiedenen
> Einzel-Designs (teilweise mehrfach eingebaut) von vier verschiedenen
> Leuten und entsprechend verschiedenen EDA-Systemen.

Wie hast Du denn die einzelnen Gerber-Files mit gerbv zusammengeführt? 
Der Fertiger will ja nur 1 Gerber-File je Layer.

von Bernd W. (berndwiebus) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hallo bingo.

bingo schrieb:

> Wie hast Du denn die einzelnen Gerber-Files mit gerbv zusammengeführt?
> Der Fertiger will ja nur 1 Gerber-File je Layer.

Aus: https://www.mikrocontroller.net/articles/Gerber-Tools#Gerber_Tools

Gerbmerge: Ein unter Python geschriebenes Tool, mit denen einzelne 
Platinen zu größeren Nutzen zusammengefügt werden können. Seit 2008 GNU 
GPL. Author: Andrew Sterian et al. Von Gerbmerge gibt es mehrere 
Forks/Versionen für unterschiedliche Zwecke (zoll/metrisch ec.) 
Mittlerweile gibt es auch eine Python 3 Version. Es handelt sich um ein 
Kommandozeilentool. Eine Kurzbeschreibung der Bedienung und ein Verweis 
auf die unterschiedlichen Versionen findet sich hier: 
Beitrag "Re: GerbMerge Gerber Editor" Die Dokumentation 
zum (originalen) Gerbmerge ist hier zu finden: 
http://www.gedasymbols.org/user/stefan_tauner/tools/gerbmerge/doc/ Die 
Python 3 Version findet sich hier: 
https://github.com/digistump/gerbmerge3

> Der Fertiger will ja nur 1 Gerber-File je Layer.

Indem man nur die jeweiligen Gerber Files aus den unterschiedlichen 
Projekten, die zur gleichen Lage gehören, zusammenfügt.

Du kennst: https://www.mikrocontroller.net/articles/Gerber-Tools ?

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de

von bingo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Am Ende war ich bei gerbv gelandet.  In der aktuellen Version (die
> es leider auch nur als git-Repo gibt) kann man damit einigermaßen
> gut interaktiv die Batches zusammenstellen.

Dass es gerbmerge gibt, ist mir bekannt. Aber Jörg schreibt, er würde 
die Dateien mit gerbv zusammenstellen. Darauf bezog sich meine Frage.

Bernd W. schrieb:
> Indem man nur die jeweiligen Gerber Files aus den unterschiedlichen
> Projekten, die zur gleichen Lage gehören, zusammenfügt.

Kann mann denn die einzelenen Gerber-Files einfach mit cat (Linux) oder 
copy (Windows) bzw. einem Texteditor aneinanderhängen, man muss 
natürlich das Layout entsprechend verschieben, aber das geht mit gerbv.

von Bernd W. (berndwiebus) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hallo Bingo.

bingo schrieb:

> Kann mann denn die einzelenen Gerber-Files einfach mit cat (Linux) oder
> copy (Windows) bzw. einem Texteditor aneinanderhängen,

Jain mit überwiegendem Nein.. Das Problem ist, dass ausser den 
Koordinateninformationen noch weitere Informationen im Header stehen, 
auf die sich die Koordinatenangaben berufen, z.B. Blendeninformationen.
Grundsätzlich ist Gerber zwar Inkremental, d.h. wenn auf einmal ein 
neuer Header im File auftaucht, gelten ab Einlesen dieses Headers für 
die folgenden Zeilen dieser Header, aber was daraus die CAM-software in 
der Leiterplattenfabrik macht, weisst Du nicht.

Darum enthält die Definition von Gerber ja auch mittlerweile den 
Hinweis, das nur ein Header pro Gerberfile existieren soll.

Das heisst, um sicher zu sein, dass Dein Leiterplattenfertiger das 
problemlos liest, müsstest Du alles irgendwie umrechnen, damit es in 
einen konsistenten Header passt.

> man muss
> natürlich das Layout entsprechend verschieben, aber das geht mit gerbv.

Auch das ist nicht in jedem Falle Trivial, wenn die Lagen anschliessend 
noch zueinander passen sollen. Gerber enthält z.B. auch "Makros"

Der Teufel sitzt im Detail. Schau doch mal in die Gerber Spezifikation, 
um einen Überblick zu bekommen.
Zu finden bei Ucamco: 
https://www.ucamco.com/files/downloads/file/81/the_gerber_file_format_specification.pdf

Abgesehen davon existieren als Altbestand noch jede Menge Gerberfiles 
mit
schrägen Gerberdaten aus Zeiten, als die Spezifikation noch nicht so 
ausgereift und klar war. Besonderer Spass, wenn Du so etwas einbringen 
möchtest. ;O)

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de

: Bearbeitet durch User
von Bernd W. (berndwiebus) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hallo bingo.

bingo schrieb:
> Jörg W. schrieb:
>> Am Ende war ich bei gerbv gelandet.  In der aktuellen Version (die
>> es leider auch nur als git-Repo gibt) kann man damit einigermaßen
>> gut interaktiv die Batches zusammenstellen.
>
> Dass es gerbmerge gibt, ist mir bekannt. Aber Jörg schreibt, er würde
> die Dateien mit gerbv zusammenstellen. Darauf bezog sich meine Frage.

Jörg schreibt aber auch, das er Gerbv aus den aktuellen Sourcen 
compiliert hat. In den Repositories der meisten Linux Versionen sind 
ältere Ausführungen, die das nicht können, oder es sind Forks (z.B. weil 
sich das Original auf nichtfreie oder inkompatible Bibliotheken 
bezieht), die das nicht können.

Ein aktuelleres findest Du z.B. hier: 
https://sourceforge.net/projects/gerbv/ vom Dezember 2017.
Keine Ahnung, ob es damit so funktioniert wie Du wünschst. Ich habe es 
nicht getestet.

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de

: Bearbeitet durch User
von bingo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bernd W. schrieb:
> Ein aktuelleres findest Du z.B. hier:
> https://sourceforge.net/projects/gerbv/ vom Dezember 2017.
> Keine Ahnung, ob es damit so funktioniert wie Du wünschst. Ich habe es
> nicht getestet.

Im Ubuntu-Repository ist z.Zt. die 2.6.0, die hatte damals wohl auch 
Jörg. ich werde mal die aktuelle 2.6.1 probieren.

Erst mal 'Danke' für Eure Hilfe.

von bingo (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Kann jetzt mal berichten, was ich gemacht habe:

Mit gerbv-2.6.1 eine Platine dupliziert und um Platinenbreite 
verschoben, dann die Gerberfiles aus gerbv gesichert und mit cat jeweils 
aneinandergehängt (das was Bernd mit 'jain' bezeichnet hat).

Schickt man das Ergebnis wieder durch gerbv werden die duplizierten 
Platinen angezeigt, die Analyse sagt 'fehlerfrei', siehe Anlage.

Mal sehen, ob elecrow.com das auch so sieht, werde es mal probieren.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
bingo schrieb:
> Wie hast Du denn die einzelnen Gerber-Files mit gerbv zusammengeführt?

Du lädst sie erstmal alle.

Dann gehst du mit der rechten Maustaste auf eine Lage, da hast du einen
Punkt "Edit Layer".  Dort gibt's die Möglichkeit der Rotation oder
Verschiebung.  Die Maßeinheit ist dabei die, die man unten im
Dropdown-Menü ausgewählt hat (standardmäßig mil, kann man aber damit
auf mm umstellen).

Zweckmäßig ist es, wenn man im Gesamtnutzen die Sichtbarkeit aller
Lagen abschaltet und dann nur die eines einzelnen Teilnutzens
aktiviert.  Dann kann man mit "Apply to Visible" alle diese auf einmal
verschieben oder rotieren.

Am Ende musst du alle die Lagen, die jeweils eine Ausgabelage ergeben
sollen, sichtbar machen und mit Export -> Export drill merge bzw.
Export -> Export Gerber merge ausgeben.

Ein bisschen viel Handarbeit, aber ergibt ein sauberes Resultat selbst
dann, wenn die Eingabedateien von völlig verschiedenen CAM-Systemen
stammten (wie bei mir damals).

von Bernd W. (berndwiebus) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg.

Danke für die Tipps.

Jörg W. schrieb:

> Dann gehst du mit der rechten Maustaste auf eine Lage, da hast du einen
> Punkt "Edit Layer".

Der Punkt heisst bei mir "Modify Orientation"

Mit freundlichem Gruß: Bernd Wiebus alias dl1eic
http://www.l02.de

von bingo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Bernd W. schrieb:
> Der Punkt heisst bei mir "Modify Orientation"

Bei mir auch. Ich wähle links ein Layer als aktiv an, dieses wird dann 
blau unterlegt, dann oben 'Layer' und 'Modify orientation' und ich kann 
z.B. unter 'Translation' festlegen, wie weit der Layer nach x oder y 
verschoben wird. Die Einheit muss man aber vor der ganzen Aktion am 
unteren Fensterrand eingestellt haben (default ist mil). Danach 'File' 
und 'Export' ...

von bingo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Dann kann man mit "Apply to Visible" alle diese auf einmal
> verschieben oder rotieren.

Das gibt es bei mir nicht (2.6.0 und 2.6.1), ich muss jedes Layer 
einzeln bearbeiten.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
bingo schrieb:
> Das gibt es bei mir nicht (2.6.0 und 2.6.1), ich muss jedes Layer
> einzeln bearbeiten.

Dann ist meine Version aus dem Sourcecode offenbar neuer.  Sie nennt
sich 2.6A.

von bingo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Dann ist meine Version aus dem Sourcecode offenbar neuer.  Sie nennt
> sich 2.6A.

Und woher hast Du die? Unter https://sourceforge.net/projects/gerbv/ ist 
die letzte Version die 2.6.2, die kann ich aber unter Ubuntu nicht 
compilieren, da angeblich 'Cairo' fehlt, obwohl ich es installiert habe.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
bingo schrieb:
> da angeblich 'Cairo' fehlt, obwohl ich es installiert habe

Hast du cairo-dev installiert?  Die meisten Linux-Distributions
trennen die Headerdateien von den eigentlichen Bibliotheken ab.

von bingo (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jörg W. schrieb:
> Hast du cairo-dev installiert?

Ja, trotzdem
Package 'cairo', required by 'world', not found

Macht nix, geht ja auch so, halt mit ein paar Clicks mehr.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
bingo schrieb:
> Package 'cairo', required by 'world', not found

Dann musst du wohl mal ins config.log schauen, worüber er stolpert.

Habe gerade mal spaßeshalber auf einem Ubuntu 16.04 den aktuellen
Git-Stand compiliert.  Geht problemlos.

Falls jemand vor hat, rotierte Daten aus Projektdateien wieder
einzulesen, dafür habe ich hier noch einen Patch, der es bislang
noch nicht in den Upstream geschafft hat.  Hintergrund ist, dass
die Genauigkeit der Zahlen in der Projektdatei limitiert ist, was
zur Folge hat, dass die Rotationen nach dem Rücklesen nicht mehr
als saubere ±90° erkannt werden.  Nur solche Rotationen können aber
derzeit bei der Gerber-Ausgabe gehandhabt werden, „krumme“ Werte
funktionieren dort nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.