Hallo zusammen, ich habe Probleme mit dem Forward/Back annotation in Eagle V9.3. (mein Fehler da die BRD-Datei nicht geöffnet war und ich einige Änderungen an Schaltplan durchgeführt habe :-( Egal was ich gemacht habe, klaptt es nicht mehr die Aktivierung der Forward/Back Annotation zu setzen. Für die Bauteilplatzierung habe viel Zeit inverstiert. Um diese nicht zu verlieren und um die Forward/Back-Annotation Problem zu umgehen, möchte ich das Board von Anfang an beginnen. Aber ich möchte auf keinen Fall für die Bauteilplatzierung wieder viel Zeit verlieren. Deswegen frage ich ob jemand einen Skript/Program kennt, welches die Bauteilplatzierung aus der bestehenden *.BRD Datei liest und anschliessend diese Bauteilplatzierung wieder reinpatcht in der neuen BRD-Datei (schliesslich ist die Datei eine XML-Datei ist). Oder hat jemand einen anderen Vorschlag. Vielen Dank für eure Hilfe.
:
Verschoben durch User
Kann das überhaupt funktionieren? Woher soll das Script wissen, welches Package zu welchem Symbol gehört? Normal haben beide den gleichen Name, aber jetzt ist z.B. IC1 im Schaltbild ein NE555 und IC1 im Board ist ein LM324. Kann man nicht die Unterschiede zwischen brd und sch interaktiv Schritt für Schritt berichtigen? Für den Zweck gibt Eagle doch eine Liste aus, magst du die mal posten? Oder gleich ein zip vom Projekt? Früher hat Eagle ca. 10 Backup-Kopien von brd und sch anlegt...
Lass den ERC laufen, dann sollte dir EAGLE sagen, was ihm nicht passt. Glattziehen, bis er nicht mehr meckert und das nächste Mal den fetten Balken (wenn es ihn noch gibt) nicht ignorieren.
Bei älteren Eagle Versionen konnte das die mount.ulp.
Naja, das mount.ulp gibt die (theoretischen) Schwerpunkt-Koordinaten der Bauteile aus, mehr nicht. Der Schwerpunkt ist nicht unbedingt der Bauteil-Nullpunkt aus der Bibliothek. Für eine ähnliche Liste gibt es auch einen Export-Menü-Punkt. Und das Problem, welches Bauteil ist welches, bleibt.
Seit EAGLE 6 ist das Board-File einfach XML. Daher geht grep '<element' projekt.brd um alle Koordinaten und Namen der Bauteile herauszuziehen. Aber es fehlen Attribute und das </element>. Damit könnte man aber schon mal ein Script schreiben das die <element...> in ein ULP mit passenden MOVE-Befehlen umwandelt. Folgendes müßte ohne Script gehen (habe es aber noch nie gemacht): 1. altes .brd umbenennen (und irgendwo sichern!) 2. .sch öffnen 3. neues .brd anlegen 4. EAGLE schließen 5. altes und neues .brd in Texteditor öffnen 6. Bereich zwischen <elements> und </elements> vom alten ins neue kopieren (die neuen elements dabei löschen) 7. in EAGLE wieder öffnen Problematisch ist sicher wenn die Bauteilnamen nicht mehr konsistent sind oder welche fehlen. Dann kopiert man nur die Fehler aus dem alten ins neue Board statt sie zu beheben. Das könnte man mit Handarbeit im XML aber auch beheben.
:
Bearbeitet durch User
Baric schrieb: > Oder hat jemand einen > anderen Vorschlag. Ein ulp das ein script erzeugt ist durchaus machbar, aber eher sinnlos. Die Konsistenz ist, wie bereits weiter oben geschrieben, einfacher über den Erc wieder herzustellen. Muss man halt öfter durchlaufen lassen. Alternativ kannst d es noch über netlist export/import versuchen.
Hallo Zusammen, warum so kompliziert? Der einfachste Weg ist, das Verzeichnis sichern und anschließend den aktuellen Schaltplan löschen, dann die Backupdatei wieder herstellen und das solange, bis Board und Schaltplan wieder übereinstimmen. Hat zumindest bei mir immer funktioniert. Gruß Frank
Danke für die Antworten und Vorschläge. Mit Export Netlist stehen die Bauteilpositionen zur Verfügung. Ich muss jetzt gucken wie ich einen Skript ULP bastele der die Bauteile platziert. Mit unzähligen "move Bauteil Bauteilposition (x, y)". Es wäre geschickter wenn Eagle selbst von Hause aus dies machen konnte :-( Vielen Dank. Gruß
Baric schrieb: > Danke für die Antworten und Vorschläge. > Mit Export Netlist stehen die Bauteilpositionen zur Verfügung. > Ich muss jetzt gucken wie ich einen Skript ULP bastele der die Bauteile > platziert. Wenn in export netlist alles drin ist was du brauchst dann modifiziere das ulp so das es dein script produziert. Da muss nur der printf Befehl angepasst werden. >> Mit unzähligen "move Bauteil Bauteilposition (x, y)". Du hast doch nur so viele move Befehle wie Bauteile vorhanden sind Das script: grid mm; move IC1 (C10 5); grid last; schiebt IC1 auf die X=10 Y=5 Koordinate (in mm) > Es wäre geschickter wenn Eagle selbst von Hause aus dies machen konnte Wenn die CAD Programme alles könnten was Nutzer so an Wünschen haben würden Sie, fürchte ich, auch eine Rechnung schreiben ;-).
@HyperMario Danke! ganz genau. so habe ich vor. unzählige....: da habe ich übertrieben. Klar um die 100 Bauteile Gruß
Give it a try ;-) board(B) { B.elements(E) { output("C:/temp/moveparts.scr", "at") { printf("MOVE %s (%f %f);\n", E.name, u2mm(E.x), u2mm(E.y+1)); } } }
HyperMario schrieb: > printf("MOVE %s (%f %f);\n", E.name, u2mm(E.x), u2mm(E.y+1)); Korrektur: printf("MOVE %s (%f %f);\n", E.name, u2mm(E.x), u2mm(E.y));
Baric schrieb: > Mit Export Netlist stehen die Bauteilpositionen zur Verfügung. > Ich muss jetzt gucken wie ich einen Skript ULP bastele der die Bauteile > platziert. _WAAAS?_ Das meinst du sicherlich nicht im Ernst. Also, wenn du Probleme mit der Inkonsistenz (nee, nicht Inkontinenz) hast, dann laß den ERC im Schematic laufen und guck dir an, was genau Eagle da zu meckern hat. Genau DAS bringst du dann in Ordnung. Normalerweise ist das kein großer Akt, verschiedene Namen und Values lassen sich sehr einfach korrigieren, für hinzugekommene oder gelöschte Bauteile muß man eben diese Bauteile entsprechend erstmal per ADD hinzufügen und dann sehen, was man tatsächlich braucht. Also stelle dich nicht so seltsam an, Eagle sagt dir ja explizit, was ihm nicht schmeckt. W.S.
Danke Hypermario. ich möchte auch die Rotation und die Spiegelung mitnehmen. Hab folgendes probiert aber leider von Mirror ist nichts zu sehen. Was ist da falsch! Danke. board(B) { B.elements(E) { output("D:/temp/moveparts.scr", "at") { printf("MOVE %s (%f %f);\n", E.name, u2mm(E.x), u2mm(E.y)); printf("ROTATE %s %f ;\n", E.name, E.angle); if (E.mirror) { printf("MIRROR %s ;\n", E.name); } } } }
Baric schrieb: > Danke Hypermario. Gerne. > > ich möchte auch die Rotation und die Spiegelung mitnehmen. Hab folgendes > probiert aber leider von Mirror ist nichts zu sehen. Was ist da falsch! > Danke. Würde ich in einzelne scripte aufteilen: board(B) { output("C:/temp/rotateparts.scr", "wt") { printf("grid mm;\n"); } B.elements(E) { output("C:/temp/rotateparts.scr", "at") { printf("ROTATE =R%f '%s' ;\n", E.angle, E.name ); } } }
und board(B) { output("C:/temp/mirrorparts.scr", "wt") { printf("grid mm;\n"); } B.elements(E) { output("C:/temp/mirrorparts.scr", "at") { if (E.mirror) printf("MIRROR '%s' ;\n", E.name ); } } }
Hi, ich verwende den Autorouter um Zeit zu sparen. Frage: was heisst in Eagle die Meldung: Layer 2 (Route 2) verwendet, aber nicht aktiviert! Darin befindliche Objekte könnten mit vom Autorouter erzeugten Durchkontaktierungen kollidieren. Danke Gruß
Baric schrieb: > Hi, > ich verwende den Autorouter um Zeit zu sparen. Mache ich auch oft. Entgegen der landläufigen Meinung halte ich den AR von EAGLE 7.7.0 für ziemlich gut (vor allem der Topo-Router). Man muß nur wissen wann und wie man ihn einsetzt. Er hilft vor allem in einem existiertenden Layout wenn man Bauteile ein bischen verschiebt und alle betroffenen Leitungen wieder sauber verbinden muß. > Frage: > was heisst in Eagle die Meldung: > Layer 2 (Route 2) verwendet, aber nicht aktiviert! > Darin befindliche Objekte könnten mit vom Autorouter erzeugten > Durchkontaktierungen kollidieren. Der Layer-Stack in den Design-Rules und die Auswahl der AR-Layer passen nicht zusammen.
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.