Forum: PC-Programmierung Gerber-Datei schreiben


von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

Hi,

ich möchte ein paar Microstrip-Filter realisieren, also Leiterplatten 
mit Strukturen wie in dem angehängten Bild. Leider bricht man sich in 
Altium Designer fast einen ab, wenn man sowas selber zeichnen muss. 
Daher wäre es cool, wenn man die Struktur als Gerberdatei importieren 
könnte.

Ich habe mir nun überlegt, ob es möglich wäre, mit vertretbarem Aufwand 
ein kleines Python-Skript zu basteln, wo man nur die Abstände und die 
Breite der Leitungen eingeben muss, und das dann eine Gerberdatei 
auswirft, wo so eine Struktur drin ist, sodass man diese in ein 
bestehendes Layout importieren kann. Leider kenne ich mich mit der 
Syntax von Gerberdateien überhaupt nicht aus, aber wäre sowas mit 
vertretbarem Aufwand machbar? hat jemand vllt. schon mal etwas ähnliches 
gemacht und könnte mir einen Lösungsansatz nennen? :-)

Grüsse
Tobias

von Georg (Gast)


Lesenswert?

Tobias P. schrieb:
> hat jemand vllt. schon mal etwas ähnliches
> gemacht und könnte mir einen Lösungsansatz nennen? :-)

Der Weg ist, in einem CAD-Programm, muss keineswegs Altium sein, eine 
Leiterplatte zu entwerfen und für die Fertigung die Daten als 
Gerberdatei auszugeben. Dein umgekehrter Weg ist genauso sinnvoll, wie 
einen Geschäftsbrief von Hand in Postscript oder PCL zu programmieren 
und dann in eine Word-Datei umzuwandeln. Geht, aber sinnfrei.

Dass man etwas nicht beherrscht, beweist nicht, dass das was alle 
Fachleute machen falsch ist. Das ist wie mit dem Geisterfahrer auf der 
Autobahn.

Georg

von Tobias P. (hubertus)


Lesenswert?

Georg schrieb:
> Dein umgekehrter Weg ist genauso sinnvoll, wie
> einen Geschäftsbrief von Hand in Postscript oder PCL zu programmieren
> und dann in eine Word-Datei umzuwandeln. Geht, aber sinnfrei.

Nein eben nicht, und es beweist, dass du das Problem nicht verstanden 
hast. Wenn man ein einziges Mal so eine Struktur malen will, dann gebe 
ich dir recht, dann lohnt sich der Aufwand nicht. Was aber, wenn du 10x 
hintereinander so ein Filter malen willst, weil du eine Versuchsreihe 
machst wo verschiedene Parameter verändert werden? oder wenn du das 
Filter später mit einer etwas anderen Geometrie wieder benutzen 
möchtest? Dann ist es sehr aufwendig, in Altium jeweils die Polygone 
immer wieder neu zu zeichnen. Viel einfacher wäre es doch, wenn du in 
einem Programm die Abstände und die Breite der Leitungen eingibst, und 
das Programm spuckt dir die fertige Zeichnung aus, die du nur noch in 
Altium importieren musst.

Übrigens: der Fall, dass ich irgendwas in eine Word-Datei umwandeln 
will, wird nie nie nie eintreten ;-)



Georg schrieb:
> Dass man etwas nicht beherrscht, beweist nicht, dass das was alle
> Fachleute machen falsch ist. Das ist wie mit dem Geisterfahrer auf der
> Autobahn.

Na das ist ja ein echt qualifizierter Kommentar. Dank dir weiss ich 
jetzt, dass ich sicher kein Fachmann bin. Danke dass du mich aufgeklärt 
hast!

Im Ernst: was ist mit diesem Forum los? früher bekam man brauchbare und 
gute Antworten. Heute wird immer der TO ausgelacht und als unfähig 
bezeichnet, wenn man ein Problem hat, was nicht alltäglich ist.

von physiker (Gast)


Lesenswert?

Insbesondere für automatisiertes Erstellen von sich wiederholenden 
Strukturen hat quasi jedes CAD-Programm, auch Altium, eingebaute 
Skriptingfähigkeiten. Das ist mit Sicherheit der bessere Ansatz, da:
- die Erforschung des Dateiformats entfällt
- der Import mitsamt Zeitaufwand und Fehleranfälligkeit entfällt
- alles in einem Programm stattfindet

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Altium Designer bietet doch alle möglichen Skriptsprachen an, d.h. 
DelphiScript, EnableBasic, JScript, TCL, VBScript, Query Script. 
Insbesondere die Delphi-Skripte sind dabei doch sehr gut verständlich 
und dokumentiert:

http://techdocs.altium.com/display/SCRT/Script+Examples+Reference#PCBScripts

Statt nun also ein externes Programm zu schreiben und daraus generierte 
Gerber-Dateien einzulesen, kann man den Aufwand doch einfach in ein 
Altium-Skript stecken. In dem mitgelieferten Beispielsskript "PCB Logo 
Creator" habe ich in Windeseile die folgenden Prozedur gefunden:
1
Procedure PlaceATrack(ABoard : IPCB_Board; X1,Y1,X2,Y2 : TCoord; ALayer : TLayer, AWidth : Float);
2
Var
3
    PCBTrack    : IPCB_Track;
4
    Sheet       : IPCB_Sheet;
5
    OffSet      : TCoord;
6
Begin
7
    // obtain the coordinates of the sheet so can place logo within the board
8
    Sheet  := ABoard.PCBSheet;
9
    OffSet := MilsToCoord(100);
10
11
    // place a new track on the blank PCB
12
    PCBTrack       := PCBServer.PCBObjectFactory(eTrackObject, eNoDimension, eCreate_Default);
13
    PCBTrack.Width := MilsToCoord(1) * AWidth;
14
15
    PCBTrack.X1    := Sheet.SheetX + MilsToCoord(X1) + Offset;
16
    PCBTrack.Y1    := Sheet.SheetY + MilsToCoord(Y1) + Offset;
17
    PCBTrack.X2    := Sheet.SheetX + MilsToCoord(X2) + Offset;
18
    PCBTrack.Y2    := Sheet.SheetY + MilsToCoord(Y2) + Offset;
19
    PCBTrack.Layer := ALayer;
20
21
    ABoard.AddPCBObject(PCBTrack);
22
End;

von Taz G. (taz1971)


Angehängte Dateien:

Lesenswert?

Ich habe das hier mal auf die schnelle geschrieben.
Version 0.1 bestimmt verbesserungswürdig.
1
Procedure PlaceACShape;
2
Var
3
    Board     : IPCB_Board;
4
    Fill    : array[0..4] of IPCB_Fill;
5
    FillCnt : integer;
6
    Height : integer;
7
    Width : integer;
8
    Opening: integer;
9
    TrackWidth: integer;
10
    MidX        : integer;
11
    MidY        : integer;
12
Begin
13
   Board := PCBServer.GetCurrentPCBBoard;
14
   if Board = nil then exit;
15
16
    if not Board.ChooseLocation(MidX,MidY,'Choose reference location') then
17
        Exit;
18
19
//  Define C Shape in mm
20
    Height := 16;
21
    Width := 22;
22
    Opening:= 8;
23
    TrackWidth:= 3;
24
25
    PCBServer.PreProcess;       // Initialize robots in PCB Server (for UNDO)
26
27
    for FillCnt := 0 to 4 do
28
    begin
29
        Fill[FillCnt] := PCBServer.PCBObjectFactory(eFillObject, eNoDimension, eCreate_Default);
30
        Fill[FillCnt].layer := Board.CurrentLayer;
31
    end;
32
    // first Fill Top
33
    Fill[0].X1Location    := 0+MidX;
34
    Fill[0].Y1Location    := MMsToCoord(Height)+MidY;
35
    Fill[0].X2Location    := MMsToCoord(Width)+MMsToCoord(TrackWidth)+MidX;
36
    Fill[0].Y2Location    := MMsToCoord(Height)+MMsToCoord(TrackWidth)+Midy;
37
    // second Fill Bottom
38
    Fill[1].X1Location    := 0+MidX;
39
    Fill[1].Y1Location    := MidY;
40
    Fill[1].X2Location    := MMsToCoord(Width)+MMsToCoord(TrackWidth)+MidX;
41
    Fill[1].Y2Location    := MMsToCoord(TrackWidth)+Midy;
42
    // third Fill left
43
    Fill[2].X1Location    := 0+MidX;
44
    Fill[2].Y1Location    := MidY;
45
    Fill[2].X2Location    := MMsToCoord(TrackWidth)+MidX;
46
    Fill[2].Y2Location    := MMsToCoord(Height)+MMsToCoord(TrackWidth)+Midy;
47
    // fourth Fill Top right
48
    Fill[3].X1Location    := MMsToCoord(Width)+MidX;
49
    Fill[3].Y1Location    := (MMsToCoord(Height)+MMsToCoord(TrackWidth)+MMsToCoord(Opening))/2+MidY;
50
    Fill[3].X2Location    := MMsToCoord(Width)+MMsToCoord(TrackWidth)+MidX;
51
    Fill[3].Y2Location    := MMsToCoord(Height)+MMsToCoord(TrackWidth)+Midy;
52
    // fiveth Fill Bottom right
53
    Fill[4].X1Location    := MMsToCoord(Width)+MidX;
54
    Fill[4].Y1Location    := (MMsToCoord(Height)+MMsToCoord(TrackWidth)-MMsToCoord(Opening))/2+MidY;
55
    Fill[4].X2Location    := MMsToCoord(Width)+MMsToCoord(TrackWidth)+MidX;
56
    Fill[4].Y2Location    := Midy;
57
58
59
    for FillCnt := 0 to 4 do
60
    begin
61
        Board.AddPCBObject(Fill[FillCnt]);
62
    end;
63
64
    Pcbserver.PostProcess;  // Clean up robots in PCB Server    (for UNDO)
65
    //Refresh the screen
66
    Client.SendMessage('PCB:Zoom', 'Action=Redraw' , 255, Client.CurrentView);
67
end;

: Bearbeitet durch User
von W.S. (Gast)


Lesenswert?

Tobias P. schrieb:
> Geht, aber sinnfrei.
>
> Nein eben nicht,

Ach, laßt das doch.

Also, es ist ein anderes Problem:
Gängige Leiterplattenprogramme sind eben nicht darauf ausgerichtet, 
verteilte Bauelemente zu beherrschen. Da wird eigentlich immer mit 
diskreten BE gearbeitet, alles Andere sind für diese Programme nur 
Verbindungen.

Spezialisierte HF-Programme wie Ansoft-Designer oder Sonnet haben solche 
Dinge drauf, aber sie haben eigentlich gar keine benutzbare 
Schnittstelle zu realen Leiterplatten, nicht mal über Gerber-Output.

Das ist ein Dilemma, weswegen ich dich durchaus verstehe. Was bleibt, 
ist das Benutzen von Ansoft oder Sonnet oder Gleichartigem für den 
eigentlichen Entwurf und das Simulieren und dann das eher händische 
Übertragen in eine Art Layout-Kunstwerk im benutzten LP-Programm. Aber 
wenn man das schon mal simuliert hat, sollte die Erfolgsquote besser 
sein, als wenn man nur so Versuchsreihen macht.

W.S.

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Alternativ gibt's hier eine Ruby-Bibliothek zum Arbeiten mit 
Gerber-Files: https://github.com/AislerHQ/joseph

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

W.S. schrieb:
> Gängige Leiterplattenprogramme sind eben nicht darauf ausgerichtet,
> verteilte Bauelemente zu beherrschen. Da wird eigentlich immer mit
> diskreten BE gearbeitet, alles Andere sind für diese Programme nur
> Verbindungen.

Altium Designer kennt für derartige Zwecke noch das Konzept der sog. 
Unions. Dabei werden beliebige Strukturen (Bauelemente, Leiterbahnen, 
Flächen, freie Elemente) "unverrückbar" miteinander verbunden. Dies ist 
für solche HF-Konstrukte eine durchaus interessante Option.

Ich selbst habe aber noch nicht mit Unions gearbeitet, sondern erzeuge 
für zusammengesetzte Strukturen üblicherweise passende 
Bibliothekssymbole. Insbesondere bei einem derart erzeugten Footprint 
kann man dann sehr genau kontrollieren, ob wirklich alles (vor allem 
Bohrungen und Pads) am richtigen Platz ist. Insbesondere Korrekturen 
sind dann auch weniger fehlerträchtig als wenn man sie im Layout 
durchführt. Nachteilig ist dabei jedoch, dass solch ein 
zusammengesetztes Bauteil nur einen einzigen Eintrag in der BOM erzeugen 
kann. Deswegen muss man ggf. doch noch weitere Dummy-Bauteile ohne 
Footprint anlegen, die dann in der BOM erscheinen. Der große Vorteil 
besteht dann wiederum darin, dass man in die BOMs besser nach 
Eigenschaften sortieren, z.B. eine separate BOM für Montagematerial 
anlegen kann. Falls z.B. der Fertiger Schrauben, Muttern, 
Unterlegscheiben aus einem anderen Material einsetzen sollte, muss man 
nur die Montage-BOMs ändern, aber nicht das "Hauptbauteil", welches ja 
nur befestigt werden soll.

von Purzel H. (hacky)


Lesenswert?

Es kann doch nicht so schwer sein, ein Gerber file, welches ja ein 
Textfile ist, zu erzeugen.
Es gibt Leute, die haben tatsaechlich die Musse, das gesammte Internet 
(!) waehrend Tagen nach einer Definition von irgendwas abzusuchen.

Bei Gerber geht's vielleicht etwas schneller. Es gibt ja auch kostenlose 
Dienste die das fuer einem tun.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Wir haben doch schon seit Tagen geklärt, dass der Weg über 
Gerber-Dateien im konkreten Fall nicht sinnvoll ist, weil Altium die 
entsprechende Skriptfähigkeit und einen Haufen Beispielskripte 
mitbringt. Vermutlich hat der TE das auch schon lange so umgesetzt.

von Georg (Gast)


Lesenswert?

Andreas S. schrieb:
> Vermutlich hat der TE das auch schon lange so umgesetzt

Nach seiner Antwort auf meinen Post eher nicht. Er glaubt wohl, dass ihn 
hier niemand versteht, weil wir alle keine Ahnung haben. Da kann man 
halt nix machen.

Georg

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Georg schrieb:
> Nach seiner Antwort auf meinen Post eher nicht.

Danach kamen zahlreiche Antworten, wie man so etwas direkt in AD 
realisiert.

von Georg (Gast)


Lesenswert?

Andreas S. schrieb:
> Danach kamen zahlreiche Antworten, wie man so etwas direkt in AD
> realisiert.

Klar, aber keine, wie man direkt Gerber schreibt - und das will er halt 
unbedingt. Typisch für das Forum, bessere Lösungen als die vorgefassten 
sind unerwünscht und führen eher noch zu Beschimpfungen durch den 
Fragesteller.

Aber das Thema ist eh abgeschlossen, es gibt auch nichts mehr dazu zu 
sagen. Im Prinzip sind sich ja alle einig ausser dem TO. Böse Welt.

Georg

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Georg schrieb:
> Typisch für das Forum, bessere Lösungen als die vorgefassten
> sind unerwünscht und führen eher noch zu Beschimpfungen durch den
> Fragesteller.

Unsinn. Wann soll Tobias in diesem Thread jemanden beschimpft haben, der 
eine bessere Lösung präsentiert hat? Die besseren Lösungen bestanden 
darin, es direkt in AD zu lösen statt sich auf den aus Unkenntnis der 
technischen Möglichkeiten zunächst angedachten Weg über Gerber-Dateien 
zu versteifen.

> Aber das Thema ist eh abgeschlossen, es gibt auch nichts mehr dazu zu
> sagen. Im Prinzip sind sich ja alle einig ausser dem TO. Böse Welt.

Nein, es sind sich alle einig, dass der Weg über die AD-eigene 
Skriptfähigkeit besser ist, außer Dir.

von Georg (Gast)


Lesenswert?

Andreas S. schrieb:
> Nein, es sind sich alle einig, dass der Weg über die AD-eigene
> Skriptfähigkeit besser ist, außer Dir.

Ich hatte dich eigentlich bisher als sachlichen Teilnehmer des Forums 
kennengelernt, aber jetzt driftest du in Trump-Argumentation ab. Ich war 
schliesslich der erste, der geschrieben hat, dass man den Weg vom 
CAD-Programm in Gerber geht und nicht umgekehrt. Aber lassen wir das 
Thema, besonders wenn es dir sowieso nur auf Mobbingposts ankommt.

Georg

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Und warum beantwortest Du nicht meine Frage nach der Stelle, an der 
Tobias andere Teilnehmer beschimpft haben soll?

von Taz G. (taz1971)


Lesenswert?

Georg schrieb:
> Klar, aber keine, wie man direkt Gerber schreibt - und das will er halt
> unbedingt.

Das der TO unbedingt Gerber schreiben möchte habe ich soooo nicht 
verstanden.

Tobias P. schrieb:
> Leider bricht man sich in
> Altium Designer fast einen ab, wenn man sowas selber zeichnen muss.

Tobias P. schrieb:
> Viel einfacher wäre es doch, wenn du in
> einem Programm die Abstände und die Breite der Leitungen eingibst, und
> das Programm spuckt dir die fertige Zeichnung aus, die du nur noch in
> Altium importieren musst.

Ich habe ein Altium Script gepostet um zu zeigen, dass es mit Altium 
genau so einfach oder kompliziert geht wie mit z.B. Python. In meinem 
Script gibt man die Daten für das Shape ein und es spuckt die fertige 
Struktur aus, die man nicht extra in Altium importieren muß. Der TO kann 
sagen - "prima genau was ich wollte" oder er sagt "ich will aber 
unbedingt den Weg über Python und Gerber gehen" -> seine Entscheidung. 
Beim zweiten Weg kann ich nicht helfen.

Gruß
Taz

von Tobias P. (hubertus)


Lesenswert?

Hallo zusammen,

das mit den Mobbingposts lasse ich nicht gelten. Ihr schlagt mir und 
euch gegenseitig die Köpfe ein und beschimpft mich als engstirnig, weil 
ich Gerber wollte. Dazu kann ich folgendes sagen:

a) in der Tat ist die Idee, die AD Skripte zu benutzen, gut. Daran habe 
ich nicht gedacht.
b) Ich wollte ursprünglich Gerber, weil das das einzige Format ist nebst 
DXF, welches in allen gängigen Layoutprogrammen importiert werden kann.

Ich habe jetzt das Ding in AD direkt gescriptet. Aber bei meinem neuen 
AG nutzen wir Mentor, wodurch ich es natürlich nochmals machen muss, 
wenn ich diese Strukturen da auch mal benutzen will.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Tobias P. schrieb:
> Ich habe jetzt das Ding in AD direkt gescriptet.

So hatte ich es ja auch vermutet und Georg gegenüber dargestellt. Ich 
habe Dir keine Engstirnigkeit unterstellt, sondern aus der Tatsache, 
dass Du Dich nicht mehr gemeldet hast, geschlossen, dass Dein Problem 
damit gelöst sei. Nur kann sich eben Georg damit nicht abfinden.

Beitrag #4934596 wurde vom Autor gelöscht.
von Tobias P. (hubertus)


Lesenswert?

Andreas S. schrieb:
> Tobias P. schrieb:
>> Ich habe jetzt das Ding in AD direkt gescriptet.
>
> So hatte ich es ja auch vermutet und Georg gegenüber dargestellt. Ich
> habe Dir keine Engstirnigkeit unterstellt, sondern aus der Tatsache,
> dass Du Dich nicht mehr gemeldet hast, geschlossen, dass Dein Problem
> damit gelöst sei. Nur kann sich eben Georg damit nicht abfinden.

Um ehrlich zu sein habe ich mich eher deswegen nicht mehr gemeldet, weil 
mir das Gejammer (nicht von dir, du bist einer der Wenigen, welche 
sinnvolle Antworten gegeben haben) gehörig auf den Zeiger gegangen ist 
und ich mir dachte, dass auf dieser Basis keine wirklich schlaue 
Diskussion mehr möglich ist. :-/

von Georg (Gast)


Lesenswert?

Andreas S. schrieb:
> Nur kann sich eben Georg damit nicht abfinden.

Deine Lüge wird durch Wiederholung nicht wahrer. Ich habe von Anfang an 
gepostet, dass der Weg rückwärts mit Gerber in CAD importieren nicht 
sinnvoll ist, das steht da auch noch zum Nachlesen, auch wenn du noch 
10mal das Gegenteil behauptest. Aber was interessieren im postfaktischen 
Zeitalter schon nachlesbare Tatsachen. Wahrscheinlich antwortest du 
jetzt wieder, ich wäre hier der einzige, der den Weg CAD -> Gerber 
ablehnt. Meinetwegen, das Thema ist es nicht wert, und du wiederholst 
offensichtlich eine Lüge einfach so oft, bis jeder, der die Wahrheit 
sagt, entnervt aufgibt. Methode Trump. Wenn's dich befriedigt...

Ich verstehe nicht, was du damit bezwecken willst, aber ich bin ja auch 
kein Psychologe.

Georg

von X4U (Gast)


Lesenswert?

Tobias P. schrieb:
> wenn man die Struktur als Gerberdatei importieren
> könnte.

Das geht mit MCAD besser als mit ECAD.
Würde ich also erst mit Autocad oder freecad zeichnen. Das wird dann 
sehr sehr genau. Lässt sich dann auch beliebig kopieren und drehen. Dann 
das dxf importieren.

Kenne Altium nicht, wird da aber wohl auch gehen.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Georg schrieb:
> Deine Lüge wird durch Wiederholung nicht wahrer.

Wenn Du hier unter Deinem Realnamen geschrieben hättest, wäre jetzt der 
Zeitpunkt gekommen, gegen Dich Strafanzeige wegen übler Nachrede zu 
erstatten.

> Ich habe von Anfang an
> gepostet, dass der Weg rückwärts mit Gerber in CAD importieren nicht
> sinnvoll ist, das steht da auch noch zum Nachlesen, auch wenn du noch
> 10mal das Gegenteil behauptest.

Um diesen Sachverhalt geht es doch schon lange nicht mehr. Es geht 
darum, dass Du immer wieder behauptest, Tobias bestünde auf dem Weg über 
Gerber-Dateien. Und das stimmt eben nicht.

> Aber was interessieren im postfaktischen
> Zeitalter schon nachlesbare Tatsachen. Wahrscheinlich antwortest du
> jetzt wieder, ich wäre hier der einzige, der den Weg CAD -> Gerber
> ablehnt.

Diese Behauptung habe ich nie aufgestellt. Ich schlage vor, dass Du Dich 
bei mir mit Deinem echten Namen und einer ladungsfähigen Anschrift 
meldest, und wir tragen die Sache vor Gericht aus.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

X4U schrieb:
> Kenne Altium nicht, wird da aber wohl auch gehen.

Ja, in Altium kann man auch DXF/DWG importieren. Das eigentliche Thema 
ist doch aber schon vollständig behandelt worden. Die Konstruktion der 
Zeichnung in einem MCAD-System wird sicherlich nicht präziser sein als 
ein Skript, das basierend auf einer Koordinatenliste die Leiterbahnen 
dort hinzeichnet, wo sie hingehören.

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.