Forum: Platinen Eagle-Skript/Programm zu Bauteilplatzierung


von Baric (Gast)


Lesenswert?

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
von Bauform B. (bauformb)


Lesenswert?

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

von Chris (Gast)


Lesenswert?

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.

von Julian B. (julinho)


Lesenswert?

Bei älteren Eagle Versionen konnte das die mount.ulp.

von Bauform B. (bauformb)


Lesenswert?

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.

von Nikolaus S. (Firma: Golden Delicious Computers) (hns)


Lesenswert?

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
von HyperMario (Gast)


Lesenswert?

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.

von Frank L. (Firma: Flk Consulting UG) (flk)


Lesenswert?

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

von Baric (Gast)


Lesenswert?

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ß

von HyperMario (Gast)


Lesenswert?

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

von Baric (Gast)


Lesenswert?

@HyperMario
Danke! ganz genau. so habe ich vor.
unzählige....: da habe ich übertrieben. Klar um die 100 Bauteile
Gruß

von HyperMario (Gast)


Lesenswert?

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

von HyperMario (Gast)


Lesenswert?

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

von W.S. (Gast)


Lesenswert?

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.

von Baric (Gast)


Lesenswert?

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

von HyperMario (Gast)


Lesenswert?

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

von HyperMario (Gast)


Lesenswert?

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

von Baric (Gast)


Lesenswert?

Super! Das hat geklappt.

von Baric (Gast)


Lesenswert?

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ß

von HyperMario (Gast)


Lesenswert?


von Nikolaus S. (Firma: Golden Delicious Computers) (hns)


Lesenswert?

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
Noch kein Account? Hier anmelden.