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
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
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.
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
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; |
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
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.
Alternativ gibt's hier eine Ruby-Bibliothek zum Arbeiten mit Gerber-Files: https://github.com/AislerHQ/joseph
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.
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.
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.
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
Georg schrieb: > Nach seiner Antwort auf meinen Post eher nicht. Danach kamen zahlreiche Antworten, wie man so etwas direkt in AD realisiert.
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
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.
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
Und warum beantwortest Du nicht meine Frage nach der Stelle, an der Tobias andere Teilnehmer beschimpft haben soll?
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
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.
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.
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. :-/
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.