EAGLE Help Version 5.7.0 | Copyright © 2010 CadSoft Computer GmbH |
Die Erklärung eines Befehls kann auch durch die Eingabe von
HELP befehlaufgerufen werden.
Ersetzen Sie "befehl" beispielsweise durch MOVE, dann rufen Sie die Hilfe-Seite für den MOVE-Befehl auf.
Von jeder anderen Stelle aus öffnet F1 eine "kontextsensitive" Hilfe-Seite.
Folgende Hilfe-Seiten geben Auskunft für den Einstieg in das Programm.
Für die Befehle ASSIGN und SET exisitieren auch Dialoge, die über das Options-Menü der Editor-Fenster aufgerufen werden.
Befehlsmenü | MENU-Befehl..; | |
Tastenbelegung | ASSIGN function_key-Befehl..; | |
Snap-Funktion | SET SNAP_LENGTH number; | |
SET CATCH_FACTOR value; | ||
SET SELECT_FACTOR value; | ||
Inhalt von Menüs | SET USED_LAYERS name | number; | |
SET WIDTH_MENU value..; | ||
SET DIAMETER_MENU value..; | ||
SET DRILL_MENU value..; | ||
SET SMD_MENU value..; | ||
SET SIZE_MENU value..; | ||
SET ISOLATE_MENU value..; | ||
SET SPACING_MENU value..; | ||
SET MITER_MENU value..; | ||
Wire Bend | SET WIRE_BEND bend_nr; | |
Beep ein/aus | SET BEEP OFF | ON; |
Farbe für Grid-Linien | SET COLOR_GRID color; | |
Farbe für Layer | SET COLOR_LAYER layer color; | |
Fill Style für Layer | SET FILL_LAYER layer fill; | |
Grid-Parameter | SET MIN_GRID_SIZE pixels; | |
min. dargest. Textgröße | SET MIN_TEXT_SIZE size; | |
Darst. der Netzlinien | SET NET_WIRE_WIDTH width; | |
Darst. der Pads | SET DISPLAY_MODE REAL | NODRILL; | |
SET PAD_NAMES OFF | ON; | ||
Darst. der Buslinien | SET BUS_WIRE_WIDTH width; | |
DRC-Füllmuster | SET DRC_FILL fill_name; | |
Polygon-Berechnung | SET POLYGON_RATSNEST OFF | ON; | |
Vector Font | SET VECTOR_FONT OFF | ON; |
Package-Check | SET CHECK_CONNECTS OFF | ON; | |
Grid-Parameter | GRID options; | |
Replace-Modus | SET REPLACE_SAME NAMES | COORDS; | |
UNDO-Buffer | SET UNDO_LOG OFF | ON; | |
Wire-Optimierung | SET OPTIMIZING OFF | ON; | |
Net-Wire beenden | SET AUTO_END_NET OFF | ON; | |
Automatische Junctions | SET AUTO_JUNCTION OFF | ON; |
Pad-Form | CHANGE SHAPE shape; | |
Wire-Breite | CHANGE WIDTH value; | |
Pad/Via-Durchmesser | CHANGE DIAMETER diameter; | |
Pad/Via/Hole-Bohrd. | CHANGE DRILL value; | |
Smd-Größe | CHANGE SMD width height; | |
Text-Höhe | CHANGE SIZE value; | |
Text-Linienbreite | CHANGE RATIO ratio; | |
Text-Font | CHANGE FONT font; | |
Polygon-Parameter | CHANGE THERMALS OFF | ON; | |
Polygon-Parameter | CHANGE ORPHANS OFF | ON; | |
Polygon-Parameter | CHANGE ISOLATE distance; | |
Polygon-Parameter | CHANGE POUR SOLID | HATCH; | |
Polygon-Parameter | CHANGE RANK value; | |
Polygon-Parameter | CHANGE SPACING distance; |
eagle [ Optionen [ Dateiname [ Layer ] ] ]
-Cxxx | den angegebenen Befehl ausführen | |
-Dxxx | Draw-Toleranz (0.1 = 10%) | |
-Exxx | Drill-Toleranz (0.1 = 10%) | |
-Fxxx | Flash-Toleranz (0.1 = 10%) | |
-N- | keine Rückfragen in der Kommandozeile | |
-O+ | Stift-Bewegungen optimieren | |
-Pxxx | Plotter-Stift (Layer=Stift) | |
-Rxxx | Bohrer-Datei | |
-Sxxx | Script-Datei | |
-Wxxx | Blenden-Datei | |
-X- | CAM-Prozessor ausführen | |
-a- | Annulus-Blenden emulieren | |
-c+ | positive Koordinaten | |
-dxxx | Ausgabegerät (-d? für Liste) | |
-e- | Blenden emulieren | |
-f+ | Pads ausfüllen | |
-hxxx | Seitenhöhe (inch) | |
-m- | Ausgabe spiegeln | |
-oxxx | Ausgabedateiname | |
-pxxx | Stiftdurchmesser (mm) | |
-q- | Quick-Plot | |
-r- | Ausgabe um 90 Grad drehen | |
-sxxx | Skalierungsfaktor | |
-t- | Thermal-Blenden emulieren | |
-u- | Ausgabe auf dem Kopf stehend | |
-vxxx | Stiftgeschwindigkeit | |
-wxxx | Seitenbreite (inch) | |
-xxxx | X-Versatz (inch) | |
-yxxx | Y-Versatz (inch) |
Hierbei bedeutet xxx, dass weitere Daten, z. B. ein Dateiname oder eine Dezimalzahl an den Optionsbuchstaben angehängt werden müssen (ohne oder mit Leerzeichen), wie zum Beispiel bei
-Wmywheel.whl -W mywheel.whl -e Blenden-Emulation ein -e+ dto. -e- Blenden-Emulation ausBei Schalter-Optionen bedeutet ein '-', dass der Schalter standardmäßig ausgeschaltet ist, während er bei '+' standardmäßig eingeschaltet ist.
Schalter-Optionen (z.B. -e) können ohne Wiederholung des '-'-Zeichens verwendet werden:
-eatm | Blenden-Emulation ein, Annulus- und Thermal-Emulation aus, Ausgabe spiegeln | |
-ea-t+ | Blenden-Emulation ein, Annulus-Emulation aus, Thermal-Emulation ein |
-D0.10 | stellt Draw-Toleranz auf ±10% ein | |
-D+0.1 -D-0.05 | stellt Draw-Toleranz auf +10% und -5% ein |
eagle -C "window (1 1) (2 2);" myboard.brdso lädt EAGLE die angegebene Datei und führt den Befehl so aus, als wäre er in der Kommandozeile des Editor-Fensters eingegeben worden.
Folgende Bedingungen gelten für die Option '-C':
eagle -C ""Beachten Sie bitte, dass in diesem speziellen Fall ein Leerzeichen zwischen dem Options-Buchstaben und den Anführungszeichen sein muss, damit das Programm den explizit leeren String sieht. Es muss dann auch kein Dateiname angegeben werden, da ja kein Befehl ausgeführt werden soll.
Wann immer Koordinaten oder Abmessungen (z.B. Leiterbahnbreiten oder Pad-Durchmesser)
angegeben werden können, können diese mit Einheiten versehen werden, wie etwa 50mil
oder 0.8mm. Wird keine Einheit angegeben, so wird die aktuelle Grid-Einheit verwendet.
Schaltplan entwerfen
Schaltplan anlegen
Neuen Schaltplan mit "Datei/Neu" anlegen und mit "Datei/Speichern unter..." unter neuem
Namen abspeichern.
Zeichnungsrahmen laden
Bibliothek FRAMES mit USE laden und Rahmen mit ADD plazieren.
Es entsteht eine Leerplatine, neben der die mit Luftlinien verbundenen Bauelemente plaziert sind. Versorgungs-Pins werden mit den Signalen verbunden, die ihrem Namen entsprechen, falls nicht explizit ein anderes Netz mit ihnen verbunden wurde.
Die Platine ist über die Forward&Back-Annotation mit dem Schaltplan verbunden. Damit ist gewährleistet, dass beide übereinstimmen. Um die Forward&Back-Annotation aufrechtzuerhalten, sollten Sie immer beide Dateien geladen haben, wenn Sie Änderungen am Schaltplan oder an der Platine durchführen.
Öffnen Sie eine Bibliothek mit Öffnen oder Neu im Datei-Menü.
Klicken Sie das Edit-Package-Icon an, und tragen Sie den gewünschten Namen in das New-Feld ein.
Legen Sie das Raster fest (GRID).
Plazieren Sie die Pads (PAD) und legen Sie deren Namen (NAME) und Parameter fest (CHANGE).
Plazieren Sie mit dem TEXT-Befehl die Strings >NAME und >VALUE (repräsentieren den aktuellen Namen und Wert in der Platine), und zeichnen Sie das Gehäuse (WIRE-Befehl) in die entsprechenden Layer.
Klicken Sie das Edit-Symbol-Icon an, und tragen Sie den gewünschten Namen in das New-Feld ein.
Plazieren Sie die Pins (PIN) und legen Sie deren Namen (NAME) und Parameter fest (CHANGE).
Plazieren Sie mit dem TEXT-Befehl die Strings >NAME und >VALUE (repräsentieren den aktuellen Namen und Wert im Schaltplan), und zeichnen Sie das Symbol (WIRE-Befehl) in die entsprechenden Layer.
Klicken Sie das Edit-Device-Icon an, und tragen Sie den gewünschten Namen in das New-Feld ein.
Weisen Sie dem Device ein Gehäuse zu (PACKAGE-Befehl).
Verwenden Sie den ADD-Befehl, um das Symbol oder die Symbole in das Device zu holen.
Klicken Sie auf das CONNECT-Icon, um festzulegen, welche Pins mit welchen Gehäuse-Pads verbunden sind.
Speichern Sie die Bibliothek, und sie kann anschließend vom
Schaltplan- oder vom Board-Editor aus mit USE geladen werden.
Control Panel
Das Control Panel ist EAGLEs Steuerzentrale.
Es enthält in der linken Fensterhälfte eine Baumstruktur und ein Informationsfenster
in der rechten Hälfte.
Verzeichnisse einstellen
Die Haupteinträge in der Baumansicht repräsentieren die verschiedenen EAGLE-Dateitypen.
Jeder der Einträge kann auf ein oder mehrere Verzeichnisse zeigen, die Dateien dieses
Typs enthalten.
Die Verzeichnisse werden im Directories-Dialog definiert.
Wenn einer der Haupteinträge auf ein Verzeichnis zeigt, sehen Sie nach dem Aufklappen
des Eintrags (entweder durch einen Klick auf das kleine Symbol links oder durch einen
Doppelklick auf den Eintrag selbst) direkt den Inhalt des Verzeichnisses.
Wenn ein Haupteintrag auf mehrere Verzeichnisse zeigt, werden nach dem Aufklappen alle
Verzeichniseinträge aufgelistet.
Verzeichnisse | Die Datei mit dem Namen DESCRIPTION darin | |
Bibliotheken | DESCRIPTION-Befehl in der Bibliothek | |
Devices | DESCRIPTION-Befehl im Device-Editor | |
Packages | DESCRIPTION-Befehl im Package-Editor | |
Design-Regeln | Die Beschreibung der Design-Regel-Datei im DRC-Dialog | |
User-Language-Programme | Text, durch die #usage-Anweisung gekennzeichnet | |
Script-Dateien | Der Kommentar am Anfang der Script-Datei | |
CAM-Jobs | DESCRIPTION-Befehl im CAM-Prozessor-Job |
Neu | Erzeugt eine neue Datei | |
Öffnen | Öffnet eine existierende Datei | |
Zuletzt geöffnete Projekte | Öffnet eines der zuletzt bearbeiteten Projekte | |
Alles speichern | Speichert alle modifizierten Editor-Dateien | |
Projekt schließen | Schließt das aktuelle Projekt | |
Beenden | Beendet das Programm |
Aktualisieren | Aktualisiert den Inhalt der Baumansicht | |
Sortieren | Ändert die Sortierung der Baumansicht |
Verzeichnisse... | Öffnet den Verzeichnis-Dialog | |
Sicherung... | Öffnet den Sicherungs-Dialog | |
Benutzeroberfläche... | Öffnet den Benutzeroberfläche-Dialog | |
Fensterpositionen... | Öffnet den Fensterpositionen-Dialog |
Control Panel | Zum Control Panel wechseln | |
1 Schaltplan - ... | Zu Fenster 1 wechseln | |
2 Board - ... | Zu Fenster 2 wechseln |
Allgemein | Öffnet eine allgemeine Hilfe-Seite | |
Kontext | Öffnet die Hilfe-Seite für den momentanen Kontext | |
Control Panel | Öffnet diese Hilfe-Seite | |
EAGLE Lizenz | Öffnet den Lizenz-Dialog | |
Auf Update prüfen | Prüft ob eine neue Version von EAGLE verfügbar ist | |
Über EAGLE | Zeigt Details zu Ihrer EAGLE Version und Lizenz an |
Wird eine Datei über dies Kontext-Menü Option ausgedruckt, so wird immer
die Datei von der Platte gelesen, auch wenn Sie ein offenes Editor Fenster
haben in dem Sie die Datei editieren! Benutzen Sie den
PRINT-Befehl um eine Zeichnung aus einem offenen
Editor Fenster heraus zu drucken.
Bitte beachten Sie, dass Polygone in Platinen beim Ausdrucken über das
Kontext-Menü nicht automatisch freigerechnet werden! Es werden lediglich die
Umrisse dargestellt. Um die Polygone freigerechnet auszudrucken, laden Sie
die Zeichnung in ein Editor-Fenster, geben Sie
RATSNEST ein und dann
PRINT.
Alle Felder können ein oder mehrere, durch Doppelpunkt (':') getrennte Verzeichnisse enthalten, in denen nach den verschiedenen Dateitypen gesucht wird.
Unter Windows werden die einzelnen Verzeichnisnamen durch Strichpunkte (';') getrennt. |
Die Variablen $HOME und $EAGLEDIR werden verwendet, um das Home-Verzeichnis des Benutzers bzw. das EAGLE-Programm-Verzeichnis anzugeben.
Unter Windows gilt für $HOME entweder die Umgebungsvariable HOME (falls gesetzt), oder der Wert des Schlüssels "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal" in der Windows-Registry, der den gültigen Pfad des Verzeichnisses "Eigene Dateien" enthält. |
Menüleiste | aktiviert das Pulldown-Menü am oberen Rand des Editor-Fensters | |
Aktionsleiste | aktiviert die Toolbar mit Buttons für "Datei", "Drucken" etc. | |
Parameterleiste | aktiviert die dynamische Parameter-Toolbar, die alle Parameter des gerade aktiven Befehls enthält | |
Befehlsmenü | aktiviert die Kommando-Toolbar | |
Textmenü | aktiviert das Text-Menü | |
Seitenvorschau | aktiviert die Vorschau für Schaltplanseiten |
Hintergrund | wählt die Hintergrundfarbe schwarz, weiß oder farbig im Layout-Editor | |
Mauszeiger | wählt einen kleines Kreuz oder ein großes Fadenkreuz als Mauszeiger im Layout-Editor |
Hintergrund | wählt die Hintergrundfarbe schwarz, weiß oder farbig im Schaltplan-Editor | |
Mauszeiger | wählt ein kleines Kreuz oder ein großes Fadenkreuz als Mauszeiger im Schaltplan-Editor |
Direkthilfe | aktiviert die "Direkthilfe" Funktion, die einen kurzen Hinweis über die Bedeutung der Buttons gibt, wenn man den Mauszeiger über einen solchen bewegt | |
Benutzerführung | aktiviert die "Benutzerführung", die einen Hilfetext anzeigt, der dem Benutzer bei aktivem Befehl jederzeit den nächsten sinnvollen Schritt angibt |
Immer Vektor-Schrift | Texte in Zeichnungen werden immer im EAGLE-eigenen Vektor-Font dargestellt, unabhängig welche Schriftart für einen Text ursprünglich gewählt wurde. | |
Mausrad-Zoomfaktor | definiert den Zoom-Faktor für das Hinein- bzw. Herauszoomen mit einer Rädchenmaus in einem Editor-Fenster ('0' schaltet diese Funktion aus, das Vorzeichen bestimmt die Drehrichtung des Rädchens) |
Sie können auch alle gespeicherten Fensterpositionen löschen, so dass es wieder
dem Window-Manager überlassen ist, wo neu geöffnete Fenster platziert werden.
Der Konfigurieren-Button öffnet einen Dialog, in dem Sie angeben können ob
und wie häufig eine automatische Überprüfung auf eine neue Version beim
Programmstart stattfinden soll (standardmäßig geschieht dies einmal am Tag).
Falls Sie einen Proxy benützen müssen, um das Internet anzusprechen, so
können Sie diesen auch im Konfigurationsdialog angeben. Geben Sie den Namen
in der Form
Falls Sie auch über Betaversionen von EAGLE informiert werden möchten, so
können sie die Option "Auch auf Betaversionen prüfen" einschalten.
Auf deutschen Tastaturen wird die Ctrl-Taste meist als Strg
bezeichnet und die Shift-Taste als "Umschalt-Taste". Da EAGLE an einigen
Stellen Code-Buchstaben für die Bezeichnung dieser Tasten verwendet (siehe
ASSIGN und Befehlseingabe)
verwenden wir durchgehend die Bezeichnungen Ctrl und Shift.
Auf Update prüfen
Die Option "Hilfe/Auf Update prüfen" im Pulldown-Menü des Control-Panels
öffnet einen Dialog, der anzeigt, ob auf dem CadSoft-Server eine neue
Version von EAGLE zur Verfügung steht.
hostname:port
ein, wobei hostname der volle Name des Proxy-Rechners ist, ohne etwaigen
http://-Präfix, und port eine optionale Port-Nummer.
Tastatur und Maus
Die Steuertasten (Alt, Ctrl und Shift) werden benutzt
um das Verhalten bestimmter Maus-Aktionen zu verändern.
Beachten Sie bitte, dass abhänging vom verwendeten Betriebssystem bzw. Window-Manager
manche dieser Tasten (in Kombination mit Maus-Aktionen) möglicherweise nicht an
Applikationen weitergeleitet werden, was zur Folge hat, dass einige der hier beschriebenen
Funktionen dann nicht verfügbar sind.
Alt
Ein Druck auf die Alt-Taste schaltet auf ein alternatives GRID
um. Dies kann typischerweise ein feineres Raster als das normale sein, wodurch es
zum Beispiel schnell und einfach möglich ist etwas in einem dicht belegten Gebiet
fein zu positionieren, wofür das normal Raster zu grob wäre.
Das alternative Grid bleibt so lange aktiv, wie die Alt-Taste gedrückt
gehalten wird.
Ctrl
Wird die Ctrl-Taste zusammen mit der rechten Maustaste gedrückt so wird
zwischen korrespondierenden Knickwinkeln hin und her geschaltet (dies betrifft nur
Befehle die Wire-Knickwinkel unterstützen, wie etwa WIRE).
Die Ctrl-Taste zusammen mit der linken Maustaste steuert spezielle Funktionen der einzelnen Befehle, wie zum Beispiel das Aufnehmen eines Objektes an seinem Aufhängepunkt beim MOVE-Befehl.
Falls ein Befehl eine Gruppe selektieren kann, so muss die Ctrl-Taste zusammen mit der rechten Maustaste gedrückt werden, um die Gruppe zu selektieren (ansonsten würde ein Kontext-Menü für das ausgewählte Objekt geöffnet).
Unter Mac OS X ist anstatt der Ctrl-Taste die Cmd-Taste zu verwenden. |
Die Shift-Taste zusammen mit der linken Maustaste steuert spezielle Funktionen der einzelnen Befehle, wie zum Beispiel das Löschen eines übergeordneten Objektes beim DELETE-Befehl.
Folgende Befehle unterstützen die mittlere Maustaste:
ADD | Bauteil spiegeln | |
ARC | aktiven Layer wechseln | |
CIRCLE | aktiven Layer wechseln | |
COPY | Objekt spiegeln | |
INVOKE | Gatter spiegeln | |
LABEL | aktiven Layer wechseln | |
MOVE | Objekt oder Gruppe spiegeln | |
PASTE | Gruppe spiegeln | |
POLYGON | aktiven Layer wechseln | |
RECT | aktiven Layer wechseln | |
ROUTE | aktiven Layer wechseln | |
SMD | aktiven Layer wechseln | |
TEXT | aktiven Layer wechseln | |
WIRE | aktiven Layer wechseln |
Click&Drag mit der mittleren Maustaste verschiebt die Zeichnung innerhalb des Editor-Fensters.
Wird ein Objekt mit der rechten Maustaste angeklickt, so wird ein kontextspezifisches Popup-Menü angezeigt, aus dem Befehle, die für dieses Objekt anwendbar sind, ausgewählt werden können. Falls gerade ein Befehl aktiv ist, der auf eine Gruppe angewendet werden kann, enthält das Popup-Menü einen entsprechenden Eintrag.
Folgende Befehle unterstützen die rechte Maustaste:
ADD | Bauteil drehen | |
ARC | Drehsinn des Kreisbogens ändern | |
BUS | Wire-Knickwinkel ändern | |
CHANGE | Change auf Gruppe anwenden | |
DELETE | Gruppe löschen | |
GROUP | Polygon schließen | |
INVOKE | Gatter drehen | |
LABEL | Label drehen | |
MIRROR | Gruppe spiegeln | |
MOVE | Objekt drehen bzw. Gruppe selektieren | |
NET | Wire-Knickwinkel ändern | |
PAD | Pad drehen | |
PASTE | Gruppe drehen | |
PIN | Pin drehen | |
POLYGON | Wire-Knickwinkel ändern | |
RIPUP | Ripup auf Gruppe anwenden | |
ROTATE | Gruppe drehen | |
ROUTE | Wire-Knickwinkel ändern | |
SMD | Smd drehen | |
SPLIT | Wire-Knickwinkel ändern | |
TEXT | Text drehen | |
WIRE | Wire-Knickwinkel ändern |
Hervorgehobenes Objekt auswählen? (links=ja, rechts=weiter, ESC=abbrechen)
Drücken Sie die rechte Maustaste, um zyklisch durch alle in Frage kommenden Objekte "durchzutasten".
Mit der linken Maustaste wählen Sie das gewünschte Objekt aus.
Um die Auswahl ganz abzubrechen, drücken Sie die Esc-Taste.
Mit dem Befehl
SET Select_Factor select_radius;können Sie beeinflussen, wie groß der "Selektionsradius" sein soll.
Wurde die ursprüngliche Selektion mit der rechten Maustaste gemacht, so erscheint
ein kontextspezifisches Popup-Menü für das erste ausgewählte Objekt, welches als
ersten Eintrag "Weiterschalten" enthält. Durch Klicken auf diesen Eintrag wird
zyklisch durch die Objekte im Selektionsradius geschaltet.
Editor-Fenster
EAGLE kennt unterschiedliche Typen von Daten-Dateien. Jeder davon wird in
einem eigenen Editor-Fenster-Typ bearbeitet. Wenn Sie eines der Objekte
durch Doppelklick selektieren oder vom Control Panel
aus eine Datei mit Datei/Öffnen
laden, dann öffnet sich ein Editor-Fenster für diesen Dateityp.
Nachdem Sie ein neues Bibliotheks-Editor-Fenster geöffnet haben,
erscheint eine leere Arbeitsfläche, und Sie müssen mit dem
EDIT Befehl angeben, welches
Gehäuse (Package), Symbol oder Device Sie laden oder neu anlegen wollen.
Package: Die Gehäuse-Definition.
Symbol: Schaltzeichen, wie es im Schaltplan erscheinen soll.
Device: Definition des realen Bauteils. Enthält eine oder
mehrere Package-Varianten und ein oder mehrere Symbole (Gates).
Es dürfen unterschiedliche Symbole kombiniert werden.
Klicken Sie den Button Dev, Pac
oder Sym, um Devices, Packages oder Symbole zu
selektieren.
Wenn Sie ein neues Objekt anlegen wollen, schreiben Sie den Namen des
neuen Objekts in das Feld New Sie können auch ein
exitstierendes Objekt laden, indem Sie seinen Namen in dieses Feld
eintippen. Wenn Sie die Extension des Datei-Namens nicht angeben, wird
ein Objekt geladen, dessen Typ vom Choose... Prompt
bestimmt wird. Andernfalls bestimmt die Extension den Typ.
Falls Ihre Lizenz das
Schaltplan-Modul nicht einschließt, erscheinen die Object-Type-Buttons
(Dev...) nicht im Menü.
Wenn im selben Verzeichnis eine Schaltplan-Datei (*.sch) mit
demselben Namen existiert, wird beim Öffnen eines Layouts automatisch
auch ein Schaltplan-Editor-Fenster
mit dieser Datei als Icon auf den Desktop
gelegt. Das ist notwendig, damit die Schaltplan-Datei geladen ist, wenn
Änderungen an der Platine die Back-Annotation
zum Schaltplan erforderlich machen.
Wenn im selben Verzeichnis eine Layout-Datei (*.brd) mit
demselben Namen existiert, wird beim Öffnen eines Layouts automatisch
auch ein Layout-Editor-Fenster
mit dieser Datei als Icon auf den Desktop
gelegt. Das ist notwendig, damit die Layout-Datei geladen ist, wenn
Änderungen an der Platine die
Forward-Annotation
zum Layout erforderlich machen.
Mit Hilfe der Combo-Box in der Action-Toolbar des Schaltplan-Editor-Fensters
können Sie zwischen den einzelnen Schaltplan-Seiten
wechseln oder neue Seiten anlegen. Sie können dazu auch den
EDIT-Befehl verwenden.
Die Textdatei muss eine reine ASCII-Datei sein und darf keine
Steuerzeichen enthalten. Als Anwendungen sind in erster Linie
vorgesehen: das Schreiben von
User-Language-Programmen und
Script-Dateien.
In diesem Befehl werden die folgenden Platzhalter durch aktuelle Werte ersetzt:
Bibliotheks-Editier-Modus
Im Bibliotheks-Editier-Modus können Sie Packages, Symbole und Devices
editieren.
Layout-Editor
Der Layout-Editor dient dazu, Layouts (*.brd) zu editieren.
Schaltplan-Editor
Der Schaltplan-Editor dient dazu, Schaltpläne (*.sch)
zu editieren.
Text-Editor
Der Text-Editor dient dazu, Textdateien zu editieren.
Verwenden eines externen Text-Editors
Falls Sie anstatt des in EAGLE eingebauten lieber einen externen Text-Editor
verwenden wollen, so können Sie den zum Starten dieses Editors nötigen Befehl
im Dialog "Optionen/Benutzeroberfläche" eintragen.
%C | die Spalte, in die der Cursor positioniert werden soll (zur Zeit immer 1) | |
%F | der Name der zu ladenden Datei | |
%L | die Zeile, in die der Cursor positioniert werden soll |
Ist als Befehl lediglich ein Minuszeichen ('-') eingetragen, so wird EAGLE niemals ein Text-Editor-Fenster öffnen. Dies ist hilfreich für Benutzer, die ihren Text-Editor immer selbst starten wollen.
Folgende Einschränkungen gelten bei der Verwendung eines externen Text-Editors:
CLOSE | Bibliothek nach Editieren schließen | |
EDIT | Zeichnung laden/anlegen | |
EXPORT | ASCII-Liste erzeugen (z.B. Netzliste) | |
OPEN | Bibliothek zum Editieren laden | |
QUIT | EAGLE verlassen | |
REMOVE | Dateien/Bibliotheks-Elemente löschen | |
SCRIPT | Befehlsdatei ausführen | |
USE | Bibliothek zum Plazieren von Elementen laden | |
WRITE | Zeichnung/Bibliothek speichern |
ADD | Element in Zeichnung / Symbol in Device einfügen | |
ARC | Kreisbogen zeichnen | |
ATTRIBUTE | Attribute definieren | |
CIRCLE | Kreis zeichnen | |
CLASS | Netzklassen definieren | |
COPY | Objekte/Elemente kopieren | |
CUT | Vorher definierte Gruppe in Paste-Buffer laden | |
DELETE | Objekt löschen | |
DESCRIPTION | Beschreibung eines Objektes ändern | |
GROUP | Gruppe für spätere Operation definieren | |
HOLE | Nichtleitende Bohrung definieren | |
LAYER | Layer definieren/wechseln | |
MIRROR | Objekt spiegeln | |
MITER | Wire-Verbindungsstellen abschrägen | |
MOVE | Objekt bewegen oder rotieren | |
NAME | Objekt mit Namen versehen | |
PASTE | Paste-Buffer in Zeichnung einfügen | |
POLYGON | Polygon zeichnen | |
RECT | Rechteck zeichnen | |
ROTATE | Objekt rotieren | |
SMASH | NAME/VALUE zum Bewegen vorbereiten | |
SPLIT | Wires/Linien (Netze etc.) knicken | |
TEXT | Text zu einer Zeichnung hinzufügen | |
VALUE | Wert für Element definieren/ändern | |
WIRE | Linie oder geroutete Verbindung zeichnen |
DRC | Design Rule Check durchführen | |
ERRORS | DRC-Fehler anzeigen | |
LOCK | Bauteilposition verriegeln | |
RATSNEST | Kürzeste Luftlinien anzeigen | |
REPLACE | Bauteil ersetzen | |
RIPUP | Signal auflösen | |
ROUTE | Signal routen | |
SIGNAL | Signal (Luftlinie) definieren | |
VIA | Durchkontaktierung (Via) plazieren |
BOARD | Platine aus einem Schaltplan erzeugen | |
BUS | Buslinie zeichnen | |
ERC | Electrical Rule Check ausführen | |
GATESWAP | Äquivalente 'Gates' tauschen | |
INVOKE | 'Gate' aus Device plazieren | |
JUNCTION | Verbindungspunkt plazieren | |
LABEL | Label für Bus oder Netz plazieren | |
NET | Netz definieren | |
PINSWAP | Äquivalente Pins tauschen |
CONNECT | Pin/Pad-Zuordnung festlegen | |
PACKAGE | Package für Device definieren | |
PAD | Pad in Package einfügen | |
PIN | Pin in Symbol einfügen | |
PREFIX | Default-Präfix für Device festlegen | |
REMOVE | Elemente aus Bibliothek löschen | |
RENAME | Symbol/Package/Device neu benennen | |
SMD | Smd-Pad in Package einfügen | |
TECHNOLOGY | Technologien für ein Device definieren | |
VALUE | Definieren, ob Value-Text änderbar |
ASSIGN | Tasten belegen | |
CHANGE | EAGLE-Parameter ändern | |
DISPLAY | Layer anzeigen/ausblenden | |
GRID | Raster/Einheit definieren | |
MENU | Befehls-Menü konfigurieren | |
SET | Programm-Parameter einstellen | |
WINDOW | Bildausschnitt verändern |
AUTO | Autorouter starten | |
HELP | Hilfe-Seite anzeigen | |
INFO | Information über Objekt zeigen | |
MARK | Messmarke setzen/entfernen | |
OPTIMIZE | Wire-Segmente zusammenfassen | |
Ausdrucken auf dem System-Drucker | ||
REDO | Zurückgenommene Befehle ausführen | |
RUN | User-Language-Programm ausführen | |
SHOW | Objekt hell darstellen | |
UNDO | Befehle zurücknehmen | |
UPDATE | Bibliotheks-Objekte aktualisieren |
Für die Befehlsbeschreibungen gelten folgende Regeln:
Befehle und Parameter in GROSSBUCHSTABEN werden direkt eingegeben (bzw. aus dem Befehlsmenü mit der Maus selektiert). Bei der Eingabe werden Groß- und Kleinbuchstaben nicht unterschieden.
Parameter in Kleinbuchstaben werden durch Namen, Zahlenwerte oder Schlüsselwörter ersetzt. Beispiel:
Syntax: | GRID grid_size grid_multiple; | |
Input: | GRID 1 10; |
Syntax: | SET BEEP OFF | ON; | |
Input: | SET BEEP OFF; | |
oder | ||
SET BEEP ON; |
Syntax: | DISPLAY option layer_name.. | |
Input: | DISPLAY TOP PINS VIAS |
Syntax: | MOVE .. | |
Input: | MOVE | |
Mausklick auf erstes zu bewegendes Element | ||
Mausklick auf das Ziel | ||
Mausklick auf zweites zu bewegendes Element | ||
etc. |
An diesem Beispiel sehen Sie auch, wie die Wiederholungspunkte bei Befehlen mit Mausklicks zu verstehen sind.
Jeder Mausklick stellt eine Koordinatenangabe dar. Will man den Befehl textuell eingeben, dann kann man anstelle des Mausklicks die Koordinaten über die Tastatur in folgender Form eingeben:
(x y)Dabei sind x und y Zahlen in der mit dem GRID-Befehl gewählten Einheit. Die textuelle Eingabemöglichkeit ist insbesondere für Script-Dateien erforderlich.
(100mil 200mil)Erlaubte Einheiten sind mm, mic, mil und in. Es können auch unterschiedliche Einheiten für x und y verwendet werden.
(@)kann dazu benutzt werden, die aktuelle Position des Mauszeigers im Zeichenfenster zu referenzieren. So würde zum Beispiel die Eingabe
MOVE R1 (@)das Bauteil mit dem Namen R1 an die Position verschieben, auf der der Mauszeiger im Moment steht.
Nach der öffnenden Klammer darf eine beliebige Kombination der folgenden Steuerzeichen folgen um einen bestimmten Tastendruck zusammen mit dem "Mausklick" zu simulieren oder die Art der Koordinaten zu modifizieren:
> | rechte Maustaste | |
A | Alt-Taste | |
C | Ctrl-Taste | |
P | Polar-Koordinaten (relativ zur Marke, x = Radius, y = Winkel in Grad, gegen den Uhrzeigersinn) | |
R | Relative Koordinaten (relativ zur Marke) | |
S | Shift-Taste |
(CR> 1 2)würde zum Beispiel einem "Mausklick" mit der rechten Maustaste an den Koordinaten (1 2) relativ zur Marke, mit gedrückter Ctrl-Taste entsprechen (natürlich würde es vom konkreten Befehl abhängen was genau mit dieser Art von Eingabe geschehen würde). Falls momentan keine Marke gesetzt ist, beziehen sich Koordinaten mit R oder P auf den Ursprung der Zeichnung. Die Steuerzeichen sind unabhängig von Groß-/Kleinschreibung, ihre Reihenfolge spielt keine Rolle und es muss auch kein Leerzeichen zwischen ihnen und der ersten Ziffer der Koordinaten stehen. Das obige Beispiel könnte also ebenso als (r>c1 2) geschrieben werden. Als "Polar-Koordinaten" eingegebene Werte werden intern als die entsprechenden (x y) Koordinaten abgespeichert.
Als Beispiel für die Koordinateneingabe in Textform soll die Eingabe der Platinenumrisse mit exakten Maßen dienen:
GRID 1 MM; CHANGE LAYER DIMENSION; WIRE 0 (0 0) (160 0) (160 100) (0 100) (0 0); GRID LAST;
WINDOW;frischt beispielsweise das Zeichenfenster auf, während
WINDOW FITdas Zeichenfenster so skaliert, dass die gesamte Zeichnung sichtbar ist. Im zweiten Fall ist kein Strichpunkt erforderlich, weil bereits klar ist, dass kein weiterer Parameter folgen kann.
Der ADD-Befehl holt ein Schaltplan-Symbol (Gate) oder ein Package aus der aktiven Bibliothek und plaziert es in der Zeichnung.
Bei der Device-Definition holt der ADD-Befehl ein Symbol in das Device.
Üblicherweise klickt man den ADD-Befehl an und selektiert das Package/Symbol aus dem sich öffnenden Menü. Nun können die Parameter (falls erforderlich) per Tastatur eingegeben werden.
Wenn device_name Platzhalter enthält ('*' oder '?') und mehr als ein Device gefunden wird, öffnet sich der ADD-Dialog. Daraus kann dann das gewünschte Device gewählt werden. Beachten Sie, dass die Beschreibung Checkbox im ADD-Dialog ausgeschaltet wird, sobald ein ADD-Befehl mit einem Device-Namen in der Kommandozeile angegeben wird, egal ob der Name Platzhalter enthält oder nicht. Der Grund hierfür ist, dass ein in der Kommandozeile angegebener Device-Name nur in den Namen der Devices gesucht wird und nicht in deren Beschreibungen.
Plaziert wird das Package/Symbol mit der linken Maustaste, rotiert wird es mit der rechten. Nachdem es plaziert wurde, hängt sofort eine weitere Kopie am Mauszeiger.
Wenn bereits ein Device oder Package mit gleichem Namen (aus derselben Bibliothek) in der Zeichnung existiert und die Bibliothek seit dem Plazieren des ursprünglichen Elements modifiziert wurde, startet EAGLE automatisch einen Library-Update bei dem Sie gefragt werden, ob die Bauteile durch die neuere Bibliotheksdefinition ersetzt werden sollen. Achtung: Nach einem Library-Update sollten Sie immer den Design Rule Check (DRC) und den Electrical Rule Check (ERC) laufen lassen!
Um ein Element direkt zu plazieren, verwenden Sie die Syntax:
ADD devicename@librarynamedevicename darf Platzhalter enthalten und libraryname darf entweder direkt der Bibliotheksname (wie "ttl" oder "ttl.lbr") oder der volle Name mit Pfadangabe (wie "/home/mydir/myproject/ttl.lbr" oder "../lbr/ttl") sein.
Beispiel:
ADD DIL14 IC1 holt das Package DIL14 in die Platine und gibt ihm den Namen IC1.
Wird im Schaltplan kein Name angegeben, erhält das Gate als Namen den bei der Device-Definition mit PREFIX festgelegten Präfix, ergänzt um eine fortlaufende Zahl (z.B. IC1).
Beispiel:
ADD 7400 Hier werden der Reihe nach fünf Gatter aus Bausteinen des Typs 7400 plaziert. Sofern als Präfix "IC" definiert wurde und die Einzelgatter innerhalb eines 7400 die Namen A...D haben, erhalten die Gatter im Schaltplan die Namen IC1A, IC1B, IC1C, IC1D, IC2A (falls schon Elemente mit demselben Präfix plaziert wurden, wird die Zählung mit der nächsten laufenden Nummer fortgesetzt. Siehe auch INVOKE.
Während ein Objekt am Cursor hängt, können Sie den Namen, unter dem es in die Zeichnung eingefügt wird, ändern. Damit können Sie mehrere Bauteile gleichen Typs unter verschiedenen, explizit vergebenen Namen einfügen:
Beispiel:
ADD CAP C1 C5 C7
Beispiel:
ADD 7400 IC1 A Dies ist vor allem dafür gedacht, wenn ein Schaltplan über ein Script generiert werden soll. Beachten Sie bitte, dass wenn ein bestimmtes Gatter geholt wird keine anderen Gatter mit Add-Level MUST oder ALWAYS automatisch mit geholt werden, und Sie müssen zumindest die MUST-Gatter mit dem INVOKE-Befehl aktivieren (ansonsten wird sie der Electrical Rule Check als fehlend melden).
[S][M]Rnnn
S | setzt das Spin-Flag, welches die Funktion abschaltet, die Texte von unten oder rechts lesbar hält (nur im Board-Kontext verfügbar) | |
M | setzt das Mirror-Flag, welches das Objekt an der Y-Achse spiegelt | |
Rnnn | setzt die Rotation auf den angegebenen Wert, der im Board-Kontext im Bereich 0.0...359.9 (mit einer Auflösung von 0.1 Grad) und im Schaltplan-Kontext einer der Werte 0, 90, 180 oder 270 sein darf (Winkel dürfen auch negativ angegeben werden, sie werden dann in den entsprechenden positiven Wert umgewandelt) |
Die Schlüsselbuchstaben S, M und R können als Groß- oder Kleinbuchstaben angegeben werden und es muss mindestens R gefolgt von einer Zahl vorhanden sein.
Ist das Mirror-Flag sowohl in einem Bauteil als auch in einem in dessen Package befindlichen Text gesetzt, so heben sich diese in ihrer Wirkung auf. Das gleiche gilt für das Spin-Flag.
Beispiele:
R0 | keine Rotation | |
R90 | um 90° gegen den Uhrzeigersinn gedreht | |
R-90 | um 90° im Uhrzeigersinn gedreht (wird in 270° umgerechnet) | |
MR0 | an der Y-Achse gespiegelt | |
SR0 | Texte werden mit "Spin" dargestellt | |
SMR33.3 | um 33.3° gegen den Uhrzeigersinn gedreht, gespiegelt und mit "Spin" |
Default: R0
ADD DIL16 R90 (0 0);plaziert ein 16poliges DIL-Gehäuse, das um 90 Grad gegen den Uhrzeigersinn gedreht ist, an den Koordinaten (0 0).
0: | Das Symbol (Gate) kann im Schaltplan nicht mit einem anderen vertauscht werden. | |
1..255 | Das Symbol (Gate) kann im Schaltplan mit jedem anderen Symbol dieses Typs vertauscht werden, das denselben Swaplevel hat (auch zwischen verschiedenen Devices). |
Default: 0
Next | Wenn ein Device mehr als ein Gate aufweist, werden in den Schaltplan der Reihe nach die Symbole mit Addlevel Next geholt. | |
Must | Wird ein beliebiges Symbol eines Device in den Schaltplan geholt, dann muss auch ein mit dem Addlevel Must definiertes Symbol im Schaltplan erscheinen. Dies geschieht automatisch. Es kann nicht gelöscht werden, bevor nicht alle anderen Symbole aus diesem Device gelöscht sind. Falls nur noch Must-Symbole aus einem Device vorhanden sind, löscht der DELETE-Befehl das ganze Device. | |
Always | Wie Must, allerdings kann ein Symbol mit Addlevel Always gelöscht und mit INVOKE wieder in den Schaltplan geholt werden. | |
Can | Gibt es in einem Device Next-Gates, dann werden Can-Gates nur geholt, wenn sie explizit mit INVOKE angefordert werden. Ein Symbol mit Addlevel Can wird mit ADD nur dann in den Schaltplan geholt, wenn das Device nur Can- und Request-Gates enthält. | |
Request | Diese Eigenschaft wird sinnvollerweise für Versorgungs-Symbole von Bausteinen verwendet. Request-Gates können nur explizit in den Schaltplan geholt werden (INVOKE) und werden intern nicht mitgezählt. Das hat zur Folge, dass in Bausteinen mit nur einem Gatter und einem Versorgungsspannungs-Symbol der Gatter-Name nicht zum Bauteil-Namen hinzugefügt wird. Im Falle eines 7400 mit vier Gattern (plus Versorgungsspannung) heißen die einzelnen Gatter im Schaltplan beispielsweise IC1A, IC1B, IC1C und IC1D. Ein 68000 mit nur einem Gate, dem Prozessor-Symbol, heisst dagegen im Schaltplan z. B. IC1, da sein separates Spannungsversorgungs-Symbol als Gate nicht mitzählt. |
Beispiel:
ADD PWR 0 REQUEST holt das Symbol PWR (z. B. ein Versorgungssymbol) und definiert dafür den Swaplevel 0 (nicht tauschbar) und den Addlevel Request.
Mit dem ARC-Befehl zeichnet man Kreisbögen. Der erste und zweite Mausklick (linke Maustaste) definieren zwei gegenüberliegende Punkte auf dem Kreisumfang. Danach lässt sich mit der rechten Maustaste festlegen, ob der Bogen im Uhrzeigersinn oder im Gegenuhrzeigersinn dargestellt werden soll. Mit dem abschließenden Mausklick legt man den Winkel des Bogens fest.
Mit den Parametern CW (Clockwise) und CCW (Counterclockwise) kann man festlegen, ob der Bogen im Uhrzeigersinn oder gegen den Uhrzeigersinn dargestellt werden soll. ROUND bzw. FLAT bestimmt ob die Enden des Kreisbogens rund oder flach sein sollen.
CHANGE WIDTH width;voreinstellen oder verändern und ist identisch mit der aktuellen Strichstärke für Wires.
Kreisbögen mit einem Winkel von 0 oder 360 Grad oder einem Radius von 0 werden nicht akzeptiert.
Beispiel für textuelle Eingabe:
GRID inch 1; ARC CW (0 1) (0 -1) (1 0);erzeugt einen Viertelkreis im ersten Quadranten mit Mittelpunkt im Ursprung.
function_key = modifier+key
modifier = jede Kombination aus S (Shift), C (Ctrl), A (Alt) und M (Cmd, nur auf Mac OS X)
key = F1..F12, A-Z, 0-9, BS (Backspace)
Mit dem ASSIGN-Befehl kann man die Funktionstasten F1 bis F12, die Buchstabentasten A bis Z, die (oberen) Zifferntasten 0 bis 9 und die Backspace-Taste (jeweils auch in Kombination mit Zusatztasten) mit einzelnen oder mehreren Befehlen belegen.
Der ASSIGN-Befehl ohne Parameter listet die aktuelle Tastenbelegung in einem Dialog auf, in dem die Einstellungen auch verändert werden können.
Die beim Betätigen der Taste auszuführende Befehlssequenz sollte man der Klarheit wegen in Hochkommas einschließen.
Soll als key eine der Tasten A-Z oder 0-9 verwendet werden, so muss der modifier mindestens A, C oder M enthalten.
Der M modifier ist nur unter Mac OS X verfügbar. |
Bitte beachten Sie, dass eine eventuell auf einer Taste liegende
Betriebssystem-Funktion durch den ASSIGN-Befehl überschrieben wird
(je nach verwendetem Betriebssystem kann es sein, dass bestimmte Tastenkombinationen
nicht mit dem ASSIGN-Befehl überschrieben werden können).
Falls Sie eine Buchstabentaste zusammen mit dem Modifier A belegen (zum Beispiel
A+F), so steht ein eventueller Hotkey im Pulldown-Menü nicht mehr
zur Verfügung.
Um eine Tastenbelegung wieder zu entfernen geben Sie ASSIGN nur mit dem function_key Code (ohne Befehl) ein.
ASSIGN F7 'change layer top; route'; ASS A+F7 'cha lay to; rou'; ASSIGN C+F10 menu add mov rou ''';''' edit; ASSIGN CA+R 'route';Die beiden ersten Eingaben bewirken das gleiche, da EAGLE nicht nur bei Befehlen, sondern auch bei den Parametern Abkürzungen zulässt, solange sie eindeutig sind.
Beachten Sie, dass hier z. B. der Befehl "CHANGE layer top" mit Strichpunkt abgeschlossen ist und der ROUTE-Befehl nicht. Im ersten Fall enthält der Befehl nämlich alle Parameterangaben, während im zweiten Fall noch Koordinatenangaben fehlen (die dann sinnvollerweise mit der Maus eingegeben werden). Der ROUTE-Befehl darf also nicht mit Strichpunkt abgeschlossen werden.
F1 HELP | Hilfe-Funktion | |
Alt+F2 WINDOW FIT | Zeichnung formatfüllend darst. | |
F2 WINDOW; | Bildschirminhalt auffrischen | |
F3 WINDOW 2 | In das Bild hineinzoomen, Fakt. 2 | |
F4 WINDOW 0.5 | Herauszoomen um Faktor 2 | |
F5 WINDOW (@); | Neues Zentrum an der Position des Mauszeigers | |
F6 GRID; | Raster ein-/ausblenden | |
F7 MOVE | MOVE-Befehl | |
F8 SPLIT | SPLIT-Befehl | |
F9 UNDO | Befehl(e) zurücknehmen | |
F10 REDO | Befehl erneut ausführen | |
Alt+BS UNDO | Befehl(e) zurücknehmen | |
Shift+Alt+BS REDO | Befehl erneut ausführen |
Siehe Beschreibung der orientation bei ADD.
Ein Attribut ist eine beliebige Kombination aus einem Namen und einem Wert, welche dazu benutzt werden kann, einem bestimmten Bauteil jede Art von Information zuzuordnen.
Attribute können in der Bibliothek definiert werden (für einzelne Devices), im Schaltplan oder im Board (für konkrete Bauteile). Attribute, die auf der Device-Ebene definiert wurden, werden für jedes Bauteil dieses Typs im Schaltplan verwendet. Im Schaltplan können jedem Bauteil weitere Attribute hinzugefügt werden, und bestehende Attribute von den Devices können mit anderen Werten überschrieben werden (falls die Attribute als variabel definiert wurden). Ein Element im Board hat alle Attribute des zugehörigen Bauteils im Schaltplan und kann weitere, eigene Attribute haben.
ATTRIBUTE name [ 'value' ] [ options ]Der name darf aus beliebigen Buchstaben, Ziffern und den Zeichen '_', '#' und '-' bestehen und beliebig lang sein; das erste Zeichen darf allerdings nicht '-' sein. Die Groß-/Kleinschreibung spielt bei den Namen keine Rolle, so dass PartNo und PARTNO der gleiche Name sind. Der value darf beliebige Zeichen enthalten und muss in Hochkommas angegeben werden.
Gültige options sind:
delete | Löscht das Attribut mit dem angegebenen Namen aus allen Technology-Varianten (in diesem Fall darf kein 'value' angegeben werden). | |
variable | Das Attribut wird als variabel markiert, so dass es im Schaltplan überschrieben werden kann (dies ist die Standardeinstellung). | |
constant | Attribute, die als konstant markiert sind, können nicht im Schaltplan überschrieben werden (es sei denn, der Anwender besteht darauf). Wird ein neues Attribut in einem Device als konstant definiert, so erhalten auch alle anderen Technologien diese Einstellung. |
Ein bereits bestehendes Attribut kann zwischen variabel und konstant umgeschaltet werden, ohne dass sein Wert erneut angegeben werden muss:
ATTRIBUTE ABC '123' | (standardmäßig variabel) | |
ATTRIBUTE ABC constant | (ABC behält den Wert '123') |
Die Attribut-Namen NAME, PART, GATE, DRAWING_NAME, LAST_DATE_TIME, PLOT_DATE_TIME und SHEET sind nicht erlaubt, da sie mit den bereits existierenden Text Variablen kollidieren würden. Ist ein Attribut namens VALUE definiert, so wird dessen Wert zum Initialisieren des tatsächlichen Wertes eines Bauteils beim Einsetzen in den Schaltplan verwendet (vorausgesetzt, das Device-Set hat 'Value On').
Wird nach dem Selektieren des ATTRIBUTE-Befehls auf ein Bauteil geklickt, so erscheint ein Dialog in dem alle Attribute dieses Bauteils aufgelistet sind und bearbeitet werden können.
Um ein Attribut vollständig textuell zu definieren kann folgende Syntax benutzt werden:
ATTRIBUTE part_name attribute_name 'attribute_value' orientation Beachten Sie bitte, dass im Falle eines Bauteils, das aus mehreren Gattern besteht, tatsächlich eines dieser Gatter ausgewählt wird. Bei der Auswahl über einen Mausklick ist bereits klar, welches Gatter gemeint ist, wohingegen bei der textuellen Auswahl der vollständige Name bestehend aus Bauteil- und Gattername angegeben werden sollte. Ein konkretes Bauteil kann nur ein Attribut mit einem bestimmten Namen haben, dieses kann aber zu jedem (oder allen) seiner Gattern hinzugefügt werden. Wird nur der Bauteilname angegeben, so wird implizit das erste sichtbare Gatter ausgewählt.
Werden keine Koordinaten angegeben (und der Befehl mit ';' abgeschlossen), so hängt das Verhalten davon ab, ob das gegebene Attribut für dieses Bauteil bereits existiert (entweder im Device oder im Schaltplan). Existiert das Attribut bereits, so wird lediglich sein Wert geändert. Falls es noch nicht existiert, so wird ein neues Attribut mit dem gegebenen Namen und Wert angelegt und am Aufhängepunkt des ausgewählten Gatters des Bauteils platziert.
Um ein Attribut von einem Bauteil zu entfernen kann der Befehl
ATTRIBUTE part_name attribute_name DELETEverwendet werden.
Bei der Definition von Attributen über die Kommandozeile oder ein Script verwenden Sie bitte den CHANGE DISPLAY Befehl um einzustellen, welche Teile des Attributs (Name, Wert, beides oder nichts davon) sichtbar sein sollen.
Solch ein Attribut könnte zum Beispiel der Autor der Zeichnung sein, und kann im Schriftfeld des Zeichnungsrahmens verwendet werden. Es wird dann auf jeder Schaltplan-Seite angezeigt, die einen Zeichnungsrahmen enthält in dem sich eine gleichnamige Text Variable befindet.
LAYER Layer; WIRE (1 2) (3 4);hier nicht funktioniert. Der Layer muss gewählt werden, wenn der ATTRIBUTE-Befehl bereits aktiv ist. Dies kann folgendermaßen geschehen:
ATTRIBUTE Parameter LAYER Layer weitere Parameter;Beachten Sie, dass die ATTRIBUTE-Zeile nicht mit einem ';' abgeschlossen ist, und dass der LAYER-Befehl in einer neuen Zeile beginnt.
ATTRIBUTE LAYER Layer;setzen den Layer für nachfolgende ATTRIBUTE-Befehle.
PACKAGE N; TECHNOLOGY LS; ATTRIBUTE PartNo '12345-ABC'; ATTRIBUTE Temp '100K' constant; ATTRIBUTE Remark 'mount manually';
Der AUTO-Befehl aktiviert den integrierten Autorouter. Werden Signalnamen angegeben oder Signale mit der Maus selektiert, werden nur diese Signale verlegt. Ohne weitere Parameter verlegt der Autorouter alle Signale. Das Zeichen "!" gibt an, dass alle Signale ausser den angegebenen zu routen sind. Es muss vor allen Signalnamen stehen und darf nur einmal vorkommen.
Die Optionen LOAD und SAVE können dazu verwendet werden die Autorouter-Parameter aus der angegebenen Datei zu laden bzw. sie in diese zu speichern. Falls filename nicht die Extension ".ctl" hat wird diese automatisch angefügt.
Ohne Parameter (oder wenn das abschließende ';' nicht angegeben wird), öffnet der AUTO-Befehl einen Dialog, in dem die Steuerparameter für den Routing-Algorithmus eingestellt werden können. Die spezielle Option FOLLOWME öffnet diesen Dialog in einem Modus, in dem nur die für den Follow-me-Router maßgeblichen Parameter verändert werden können.
AUTO ! GND VCC;Der abschließende Strichpunkt ist in jedem Fall erforderlich, es sei denn, der Autorouter wird vom Menü aus mit "Start" gestartet. Die Aktivitäten des Autorouters können Sie am Bildschirm mitverfolgen.
Das Menü des Autorouter-Befehls erscheint nach Eingabe von AUTO ohne abschließenden Strichpunkt.
* | steht für eine beliebige Anzahl beliebiger Zeichen | |
? | steht für genau ein Zeichen | |
[...] | steht für irgend eines der Zeichen zwischen den Klammern |
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern eingeschlossen werden. Zum Beispiel findet abc[*]ghi die Zeichenfolge abc*ghi, aber nicht abcdefghi.
Ein Bereich von Zeichen kann als [a-z] angegeben werden, was für eines der Zeichen aus dem Bereich 'a'...'z' steht.
Falls der Autorouter keine Signale in einem Layer verlegen soll, ist in das Feld für die Vorzugsrichtung 0 einzutragen.
Der BOARD-Befehl erzeugt eine Layout-Datei aus einem Schaltplan.
Wenn die Platine bereits existiert, wird sie in ein Layout-Editor-Fenster geladen.
Wenn die Platine nicht existiert, werden Sie gefragt, ob Sie eine neue Datei anlegen wollen. Wird der grid Parameter angegeben, so werden die Bauteile in dem angegebenen Raster platziert, wie in
BOARD 5mmwomit die Bauteile in einem 5mm Raster platziert würden (Default ist 50mil). Die Zahl muss mit Einheit angegeben werden und der Maximalwert ist 10mm.
Der BOARD-Befehl überschreibt niemals eine existierende Platinen-Datei. Wenn eine Datei mit diesem Namen existiert, muss sie erst mit REMOVE gelöscht werden, bevor der BOARD-Befehl sie neu anlegen kann.
edit .brdin die Kommandozeile des Editor-Fensters eintippen.
Alle relevanten Daten der Schaltplan-Datei (name.sch) werden dann in eine Board-Datei (name.brd) konvertiert. Das neue Board wird automatisch mit einer Größe von 160x100mm (Light Edition: 100x80mm) angelegt. Alle Packages mit den im Schaltplan definierten Verbindungen sind links neben der leeren Platine plaziert. Power-Pins sind bereits verbunden (siehe PIN-Befehl).
Falls Sie andere als die standardmäßig angelegten Platinenumrisse benötigen, brauchen Sie einfach nur die entsprechenden Linien zu löschen und die gewünschten Umrisse mit dem WIRE-Befehl in den Layer Dimension zu zeichnen. Wählen Sie dazu bitte eine Strichbreite von 0, da es sich hierbei nur um Hilfslinien handelt.
Eine Board-Datei kann nicht angelegt werden:
Mit dem Befehl BUS zeichnet man Busse in den Bus-Layer eines Schaltplans. Der Busname hat die Form
SYNONYM:Teilbus,Teilbus,..wobei SYNONYM ein beliebiger Name sein darf. Teilbus ist entweder ein Netzname oder ein Busname mit Index in der Form:
Name[LowestIndex..HighestIndex]Folgende Bedingungen müssen erfüllt sein:
0 <= LowestIndex <= HighestIndex <= 511
Wird ein Teilbus mit einem Index verwendet, darf der Name nicht mit einer Zahl enden, da sonst nicht klar wäre, welche Zahl zum Namen und welche zum Index gehörten.
Wenn der Bus auf einem anderen Bus abgesetzt wird, endet die Linie an dieser Stelle. Dieses Verhalten kann über "SET AUTO_END_NET OFF;" oder durch Deselektieren der Option "Netze und Busse automatisch beenden" unter "Optionen/Einstellungen/Verschiedenes" abgeschaltet werden.
Wird der curve oder @radius Parameter angegeben, so kann ein Kreisbogen als Teil des Busses gezeichnet werden (siehe die ausführliche Beschreibung beim WIRE-Befehl).
A[0..15] RESET DB[0..7],A[3..4] ATBUS:A[0..31],B[0..31],RESET,CLOCK,IOSEL[0..1]Gibt man keinen Busnamen an, wird ein Name der Form B$1 automatisch vergeben. Dieser Name lässt sich zu jeder Zeit mit dem NAME-Befehl verändern. Die Breite der Linien, die einen Bus darstellen, lässt sich z. B. mit
SET BUS_WIRE_WIDTH 40;auf 40 Mil einstellen (Default: 30 Mil).
ATBUS:A[0..31],B[0..31],!RESET,CLOCK,IOSEL[0..1]was als
_____ ATBUS:A[0..31],B[0..31],RESET,CLOCK,IOSEL[0..1]dargestellt würde. Einzelheiten hierzu finden Sie in der Beschreibung des TEXT-Befehls.
Nachfolgend plazierte Objekte erhalten die mit CHANGE geänderten Eigenschaften. Damit ist es möglich, mit diesem Befehl Parameter voreinzustellen.
Alle Zahlenangaben beziehen sich auf die aktuelle Maßeinheit (siehe GRID).
Layer wechseln | CHANGE LAYER name | number | |
Text ändern | CHANGE TEXT [ text ] | |
Texthöhe | CHANGE SIZE value | |
Textstärke | CHANGE RATIO ratio | |
Text Font | CHANGE FONT VECTOR | PROPORTIONAL | FIXED | |
Wire-Breite | CHANGE WIDTH value | |
Wire-Linientyp | CHANGE STYLE value | |
Arc-Ende | CHANGE CAP ROUND | FLAT | |
Pad-Form | CHANGE SHAPE SQUARE | ROUND | OCTAGON | LONG | OFFSET | |
Pad-/Via-/Smd-Flags | CHANGE STOP | CREAM | THERMALS | FIRST OFF | ON | |
Pad-/Via-Durchmesser | CHANGE DIAMETER diameter | |
Pad-/Via/Hole-Bohrd. | CHANGE DRILL value | |
Via Layer | CHANGE VIA from-to | |
Smd-Maße | CHANGE SMD width height | |
Pin-Parameter | CHANGE DIRECTION NC | IN | OUT | I/O | OC | HIZ | SUP | PAS | PWR | SUP | |
CHANGE FUNCTION NONE | DOT | CLK | DOTCLK | ||
CHANGE LENGTH POINT | SHORT | MIDDLE | LONG | ||
CHANGE VISIBLE BOTH | PAD | PIN | OFF | ||
CHANGE SWAPLEVEL number | ||
Polygon-Parameter | CHANGE THERMALS OFF | ON | |
CHANGE ORPHANS OFF | ON | ||
CHANGE ISOLATE distance | ||
CHANGE POUR SOLID | HATCH | ||
CHANGE RANK value | ||
CHANGE SPACING distance | ||
Gate-Parameter | CHANGE SWAPLEVEL number | |
CHANGE ADDLEVEL NEXT | MUST | ALWAYS | CAN | REQUEST | ||
Netzklasse | CHANGE CLASS number | name | |
Package-Variante | CHANGE PACKAGE part_name [device_name] | 'device_name' [part_name] | |
Technologie | CHANGE TECHNOLOGY part_name [device_name] | 'device_name' [part_name] | |
Attribute-Anzeige | CHANGE DISPLAY OFF | VALUE | NAME | BOTH | |
Frame-Parameter | CHANGE COLUMS value | |
CHANGE ROWS value | ||
CHANGE BORDER NONE | BOTTOM | RIGHT | TOP | LEFT | ALL | ||
Label | CHANGE XREF OFF | ON |
Mit dem CIRCLE-Befehl zeichnet man Kreise in den aktiven Layer.
Der CIRCLE-Befehl in den Layern tRestrict, bRestrict und vRestrict dient zum Anlegen von Sperrflächen. Dabei sollte eine Linienstärke (width) von 0 gewählt werden.
Der Parameter "width" gibt die Strichstärke des Kreises an. Er entspricht demselben Parameter des WIRE-Befehls und kann mit dem Befehl
CHANGE WIDTH breite;geändert bzw. voreingestellt werden. Dabei ist breite der gewünschte Wert in der gegenwärtigen Einheit.
Kreise mit Strichstärke 0 werden gefüllt dargestellt.
GRID inch 1; CIRCLE (0 0) (1 0);erzeugt einen Kreis mit einem Radius von 1 Zoll um den Ursprung (0 0).
Der CLASS-Befehl wird zur Definition von Netzklassen verwendet.
Ohne Angabe von Parametern, wird ein Dialog geöffnet, der es erlaubt Netzklassen festzulegen.
Wird nur number oder name angegeben, wählt man die Netzklasse mit der entsprechenden Nummer bzw. dem Namen für die folgenden NET- und SIGNAL-Befehle vor.
Wird number und name angegeben, werden dieser Netzklasse die folgenden Werte für die Parameter zugeordnet. Diese Netzklasse ist gleichzeitig für die folgenden NET- und SIGNAL-Befehle vorgewählt. Werden nach name nicht alle Parameter angegeben, gelten die Werte der Reihe nach für width, clearance, drill bzw. interspace. Soll beispielsweise nur drill geändert werden, müssen also auch die Parameter für width und clearance angegeben werden.
Wird number negativ gewählt, löscht man die Netzklasse mit dem Absolutwert der angegebenen number. Die Default-Netzklasse 0 kann man nicht löschen.
Bei den Namen der Netzklassen wird nicht zwischen Groß- und Kleinbuchstaben unterschieden. SUPPLY hat z. B. dieselbe Bedeutung wie Supply oder SuPpLy.
Werden mehrere Netzklassen in einer Zeichnung verwendet, braucht der Autorouter länger um seine Arbeit zu erledigen. Daher ist es sinnvoll nur soviele Netzklassen wie unbedingt nötig zu verwenden (die Anzahl der tatsächlich benutzten Netzklassen ist ausschlaggebend, nicht die Anzahl der definierten Netzklassen).
Um Probleme bei CUT-und-PASTE-Aktionen zwischen verschiedenen Zeichnungen zu vermeiden, ist es sinnvoll den unterschiedlichen Netzklassen in verschiedenen Zeichnungen dieselben Nummern zu geben.
Der Autorouter verlegt die Signal in der Reihenfolge der benötigten Breite (width + clearance), beginnend mit denen, die am meisten Platz benötigen. Der Bus-Router verlegt nur Signale mit Netzklasse 0.
Für bestehende Netze/Signale kann CLASS mit dem CHANGE-Befehl geändert werden. Änderungen der Netzklassen mit dem CLASS-Befehl werden nicht im UNDO/REDO-Puffer gespeichert.
CLASS 3 1:0.6mm 2:0.8mmdefiniert einen Mindestabstand von 0.6mm zwischen Signalen in den Netzklassen 1 und 3, sowie einen von 0.8mm zwischen Signalen in den Netzklassen 2 und 3. Beachten Sie bitte, dass die Nummern in number:clearance kleiner oder gleich der Nummer der Netzklasse selbst ('3' im obigen Beispiel) sein müssen. Demnach wäre
CLASS 3 1:0.6mm 2:0.8mm 3:0.2mmebenfalls gültig, während
CLASS 3 1:0.6mm 2:0.8mm 3:0.2mm 4:0.5mmnicht erlaubt ist
Der CLOSE-Befehl schließt ein Editor-Fenster. Wenn die geladene Datei verändert worden ist, werden Sie gefragt, ob sie abgespeichert werden soll.
Dieser Befehl ist in erster Linie für Script-Dateien erforderlich.
CONNECT
Siehe auch PREFIX,
OPEN,
CLOSE,
SCRIPT
CONNECT symbol_name.pin_name pad_name..
CONNECT pin_name pad_name..
Dieser Befehl wird im Device-Editier-Modus angewendet. Er dient dazu, den Pins des Schaltplan-Symbols (Device), das gegenwärtig bearbeitet wird, die entsprechenden Pads des zugehörigen Gehäuses zuzuweisen. Zuvor muss mit dem PACKAGE-Befehl festgelegt worden sein, welches Package für das Device verwendet werden soll.
Wird der CONNECT-Befehl ohne Parameter aufgerufen, so erscheint ein Dialog in dem die Pad/Pin-Zuweisungen interaktiv definiert werden können.
CONNECT gnd 1 rdy 2 phi1 3 !irq 4 nc1 5 ...
CONNECT A.I1 1 A.I2 2 A.O 3; CONNECT B.I1 4 B.I2 5 B.O 6; CONNECT C.I1 13 C.I2 12 C.O 11; CONNECT D.I1 10 D.I2 9 D.O 8; CONNECT PWR.GND 7; CONNECT PWR.VCC 14;In diesem Fall werden die Anschlüsse der vier NAND-Gatter eines 7400 zugewiesen. Das Device enthält fünf Symbole mit den Bezeichnungen A, B, C, D, PWR. Die Eingänge der Gatter heißen im Schaltplan I1 und I2; der Ausgang heisst O.
Der CONNECT-Befehl kann beliebig oft ausgeführt werden. Er kann alle Pin/Pad-Zuweisungen enthalten oder nur einen Teil davon. Jeder neue CONNECT-Befehl überschreibt die bisherigen Definitionen.
ed 6502.dev; prefix 'IC'; package dil40; connect gnd 1 rdy 2 phi1 3 !irq 4 nc1 5 !nmi 6 \ sync 7 vcc 8 a0 9 a1 10 a2 11 a3 12 a4 \ 13 a5 14 a6 15 a7 16 a8 17 a9 18 a10 19 \ a11 20 p$0 21 a12 22 a13 23 a14 24 a15 \ 25 d7 26 d6 27 d5 28 d4 29 d3 30 d2 31 \ d1 32 d0 33 r/w 34 nc2 35 nc3 36 phi0 37 \ so 38 phi2 39 !res 40;Hier sorgt das Zeichen "\" am Zeilenende dafür, dass am Beginn der nächsten Zeile keine Zeichenfolge mit einem Befehl verwechselt werden kann. Als Bestandteil eines Pin-Namens drückt das Zeichen "!" aus, dass es sich um ein invertiertes Signal handelt (z.B. "!irq").
Eine Verwechslung mit Befehlen kann man auch vermeiden, indem man
Parameter in Hochkommas einschließt.
COPY
Siehe auch GROUP,
CUT,
PASTE,
ADD,
INVOKE,
POLYGON
COPY deviceset@library [name]
COPY package@library [name]
Mit dem COPY-Befehl lassen sich Objekte selektieren und anschließend an eine andere Stelle derselben Zeichnung kopieren. Beim Kopieren von Bauteilen generiert EAGLE einen neuen Namen und behält den Wert (Value) bei. Beim Kopieren von Signalen (Wires), Bussen und Netzen wird der Name beibehalten. In allen anderen Fällen wird ein neuer Name generiert.
Wenn Sie lediglich ein weiteres Gatter eines aus mehreren Gattern bestehenden Bauteils verwenden wollen, sollten Sie stattdessen den INVOKE-Befehl benutzen.
Beachten Sie bitte, dass etwaige existierende Bibliotheksobjekte (Device-Sets, Symbole oder Packages), die von dem kopierten Bibliotheksobjekt verwendet werden, automatisch upgedatet werden.
Teile einer Zeichnung (z. B. auch eine ganze Platine) lassen sich mit Hilfe der Befehle GROUP, CUT und PASTE in andere Zeichnungen übernehmen.
Zuerst definiert man eine Gruppe (GROUP). Dann aktiviert man den Befehl CUT, gefolgt von einem Referenzpunkt (Mausklick oder Angabe einer Koordinate (x y)) der den Paste-Puffer mit den selektierten Objekten lädt. CUT; setzt den Referenzpunkt automatisch etwa in der Mitte der selektierten Objekte (genauer: am nächstgelegenen Rasterpunkt). Jetzt kann man die Platine oder die Bibliothek wechseln und mit PASTE den Pufferinhalt in die neue Zeichnung kopieren. Falls erforderlich, werden neue Namen generiert. Der Pufferinhalt bleibt erhalten und kann mit weiteren PASTE-Befehlen erneut kopiert werden.
Der DELETE-Befehl löscht das selektierte Objekt aus der Zeichnung.
Bauteile, Pads, Smds, Pins und Gatter lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen bestehende Name angegeben werden.
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination aus Bauteilname und Attributname angegeben wird, wie etwa R5>VALUE.
Mit der rechten Maustaste wird eine zuvor mit GROUP definierte Gruppe gelöscht.
Nach dem Löschen einer Gruppe können Luftlinien, die durch das Entfernen von Bauelementen neu entstanden sind, "übrigbleiben", da diese nicht in der ursprünglich definierten Gruppe enthalten waren. In solchen Fällen sollte mit RATSNEST eine Neuberechnung der Luftlinien durchgeführt werden.
Bei aktiver Forward&Back-Annotation können im Board keine Wires oder Vias aus Signalen gelöscht werden, die an Bauelemente angeschlossen sind. Ebenso können keine Bauelemente gelöscht werden, an die Signale angeschlossen sind. Änderungen dieser Art müssen im Schaltplan vorgenommen werden.
Um eine bereits verlegte Verbindung im Board wieder in eine Luftlinie zu verwandeln, verwenden Sie den RIPUP-Befehl.
Der DELETE-Befehl wirkt nur auf sichtbare Layer (siehe DISPLAY-Befehl).
DELETE SIGNALS kann dazu verwendet werden, alle Signale aus einer Platine zu entfernen, um z. B. eine neue oder geänderte Netzliste einzulesen. Es werden nur solche Signale entfernt, die an Pads angeschlossen sind. Andere (wie z.B. Eckwinkel im Top- und Bottom-Layer, die intern auch als Signal behandelt werden) bleiben unberührt.
Falls ein Bauteil gelöscht werden soll, das den Namen SIGNALS trägt, so muss dieser in einfache Hochkommas gesetzt werden.
Gatter | Löscht das gesamte Bauteil, in dem sich dieses Gatter befindet (auch wenn die Gatter auf mehrere Schaltplan-Seiten verteilt sind). Bei aktiver Forward&Backannotation werden die Leiterbahnen, die an dem Bauteil im Board angeschlossen sind, nicht in Luftlinien umgewandelt (was beim Löschen einzelner Gatter geschehen würde), ausgenommen die Fälle wo ein Pin des gelöschten Bauteils nur direkt mit genau einem anderen Pin und keinem Net-Wire verbunden ist | |
Polygon Wire | Löscht das gesamte Polygon | |
Net/Bus Wire | Löscht das gesamte Netz- bzw. Bus-Segment |
Der DRC erzeugt unter Umständen Fehlerpolygone, die man nicht mit DELETE
löschen kann, sondern mit DRC Clear.
DESCRIPTION
Siehe auch CONNECT,
PACKAGE,
VALUE
DESCRIPTION description_string;
Mit diesem Befehl erzeugt oder editiert man die Beschreibungstexte eines Devices, eines Packages oder einer Bibliothek im Bibliotheks-Editor.
Description_string kann HTML-Steuerzeichen enthalten.
Die erste nicht leere Zeile von description_string wird als Kurzbeschreibung (headline) im Control Panel angezeigt.
Der DESCRIPTION-Befehl ohne Angabe von Parametern öffnet einen Dialog, der das Editieren des Textes erlaubt. Der obere Teil des Dialogs zeigt den formatierten Text, sofern er Steuerzeichen des HTML-Formats enthält, während der untere Teil für die Eingabe des Textes genutzt wird. Ganz oben im Dialog sehen Sie das Feld headline. In diesem wird die Kurzbeschreibung ohne HTML-Steuerzeichen angezeigt.
Die Beschreibung der Bibliothek kann von der Kommandozeile aus nur editiert werden, wenn die Bibliothek neu
geöffnet und bisher kein Device, Symbol oder Package editiert wurde. Sie kann aber jederzeit
über das Pulldown-Menü "Bibliothek/Beschreibung..." verändert werden.
Die Beschreibung eines Devices oder eines Packages kann immer über die Kommandozeile
oder das Pulldown-Menü "Bearbeitung/Description..." verändert werden.
DESCRIPTION '<b>Quad NAND</b><p>\nFour NAND gates with 2 inputs each.';Das Resultat sieht so aus:
Quad NAND
Four NAND gates with 2 inputs each.
DISPLAY
Siehe auch LAYER,
PRINT
DISPLAY [option] layer_number..
DISPLAY [option] layer_name..
Gültige options sind: ALL, NONE, LAST, ? und ??
Mit dem DISPLAY-Befehl wählt man diejenigen Layer aus, die auf dem Bildschirm sichtbar sein sollen. Dabei darf als Parameter die Layer-Nummer oder der Layer-Name angegeben werden (auch gemischt). Gibt man den Parameter ALL an, werden alle Layer sichtbar. Mit dem Parameter NONE kann man alle Layer ausblenden. Beispiel:
DISPLAY NONE BOTTOMNach diesem Befehl ist nur der Bottom-Layer sichtbar.
Wird der Parameter LAST angegeben, so werden die zuvor sichtbaren Layer dargestellt.
Bitte beachten Sie, dass von den Signal-Layern (1 bis 16) nur diejenigen zur Verfügung stehen, die im Layer-Setup in den Design Rules eingetragen sind.
Stellt man dem Layer-Namen oder der Layer-Nummer ein Minuszeichen voran, wird er ausgeblendet. Beispiel:
DISPLAY BOTTOM -TOP -3In diesem Fall wird Bottom eingeblendet, und Top sowie der Layer mit der Nummer 3 werden ausgeblendet.
Manche Befehle (PAD, SMD, SIGNAL, ROUTE) aktivieren automatisch bestimmte Layer.
Wird der DISPLAY-Befehl ohne Parameter aufgerufen, so erscheint ein Dialog in dem alle Einstellungen vorgenommen werden können.
DISPLAY TOP BOTTOM ? MYLAYER1 MYLAYER2 ?? OTHER WHATEVERIm Beispiel oben müssen die Layer TOP und BOTTOM definiert sein. Ansonsten wird der Befehl mit einer Fehlermeldung abgebrochen. Das Fehlen von MYLAYER1 und MYLAYER2 wird in einer Warnung angezeigt. Die Aktion kann vom Benutzer abgebrochen werden. Die Layer OTHER und WHATEVER werden angezeigt, wenn vorhanden, ansonsten werden sie einfach ignoriert.
Die Optionen '?' und '??' dürfen in einer Befehlssequenz beliebig oft verwendet werden.
Wählt man für den Layer 17 (Pads) bzw. 18 (Vias) die Farbe 0 (das entspricht der Hintergrundfarbe), werden Pads und Vias in der Farbe und dem Füllmuster des jeweiligen Signal-Layers gezeichnet. Ist kein Signal-Layer eingeblendet, werden auch keine Pads oder Vias dargestellt.
Wählt man für den Layer 17 (Pads) bzw. 18 (Vias) eine andere Farbe und es ist kein Signal-Layer sichtbar, werden Pads und Vias in der Form des obersten und untersten Signal-Layers dargestellt.
Das gilt auch für Ausdrucke mit PRINT.
Vermeiden Sie die Layer-Namen ALL und NONE, sowie Namen, die mit einem Minuszeichen beginnen.
Die Syntax zur Bearbeitung dieser Aliase ist:
DISPLAY = MyLayers None Top Bottom Pads Vias Unrouted
Definiert den Alias "MyLayers" der, wenn er wie in
DISPLAY myl
benutzt wird, genau die Layer Top, Bottom, Pads, Vias und Unrouted anzeigt
(ohne den "None"-Parameter würden die angegebenen Layer zusätzlich zu den
bereits sichbaren angezeigt).
Beachten Sie bitte die abgekürzte Verwendung des Aliases,
und dass die Groß-/Kleinschreibung keine Rolle spielt.
DRC
Siehe auch Design Rules,
CLASS,
SET,
ERC,
ERRORS
DRC ;
DRC LOAD|SAVE filename;
Der DRC-Befehl prüft das Layout gegenüber einem gültigen Satz von Design Rules.
Beachten Sie bitte, dass elektrisch nicht relevante Objekte (Wires in Packages, Rechtecke, Kreise und Texte) untereinander nicht auf Mindestabstandsverletzungen ("Clearance") geprüft werden.
Die gefundenen Fehler werden als Fehlerpolygone in den zugehörigen Layern dargestellt und können mit dem ERRORS-Befehl bearbeitet werden.
Geben Sie den DRC-Befehl ohne weitere Parameter an, öffnet sich der Design-Rules-Dialog. Von hier aus kann man die Design Rules einstellen und die Prüfung starten.
Wird der DRC-Befehl mit zwei Koordinatenpaaren angegeben (oder im DRC-Dialog der Button Select angeklickt), prüft der DRC nur innerhalb des angegebenen Rechtecks. Es werden nur die Fehler angezeigt, die innerhalb des Rechteck liegen.
Falls Sie DRC-Fehler erhalten, die auch nach einer entsprechenden Änderung der Design Rules nicht verschwinden, überprüfen Sie bitte die Netzklasse des beanstandeten Objektes. Möglicherweise wird der Fehler wegen eines der Parameter dieser Klasse gemeldet.
Um alle Fehlerpolygone zu löschen verwenden Sie
ERRORS CLEAR
Die Optionen LOAD und SAVE können dazu verwendet werden die Design Rules aus der angegebenen Datei zu laden bzw. sie in diese zu speichern. Falls filename nicht die Extension ".dru" hat wird diese automatisch angefügt.
SET DRC_FILL fill_name;Legt das für die DRC-Fehlerpolygone verwendete Füllmuster fest. Default: LtSlash.
Der EDIT-Befehl wird verwendet, um eine Platine oder einen Schaltplan zu editieren bzw. neu anzulegen. Ausserdem dient der Befehl dazu, Symbole, Devices und Packages zu laden, wenn man eine Bibliothek bearbeitet.
EDIT name.brd | lädt eine Platine | |
EDIT name.sch | lädt einen Schaltplan | |
EDIT name.pac | lädt ein Package | |
EDIT name.sym | lädt ein Symbol | |
EDIT name.dev | lädt ein Device | |
EDIT .s3 | lädt Seite 3 eines Schaltplans | |
EDIT .s5 .s2 | verschiebt Seite 5 vor Seite 2 und lädt sie (falls Seite 5 nicht existiert, wird eine neue Seite vor Seite 2 eingefügt) | |
EDIT .s2 .s5 | verschiebt Seite 2 vor Seite 5 und lädt sie (falls Seite 5 nicht existiert, wird Seite 2 zur letzten Seite) |
Platzhalter in Namen sind erlaubt (z. B. edit *.brd).
Gibt man EDIT ohne weitere Parameter ein, können Sie die Datei oder das Objekt mit Hilfe des sich öffnenden Menüs wählen.
Um von einem Schaltplan zu einer Platine mit dem gleichen Namen zu wechseln, kann man den Befehl
EDIT .brdverwenden. Umgekehrt kommt man von der Platine in den entsprechenden Schaltplan mit
EDIT .schEine andere Seite eines Schaltplans kann man mit
EDIT .sX(X ist die Seitennummer) oder mit Hilfe der Combo-Box in der Action-Toolbar laden. Falls die angegebene Seitennummer nicht existiert, wird eine neue Seite angelegt.
Sie können auch zwischen Schaltplanseiten wechseln indem Sie auf ein Icon in der Vorschau für Schaltplanseiten klicken. Drag&drop in der Vorschau erlaubt es, Seiten umzusortieren. Bitte beachten Sie, dass das Hinzufügen, Löschen oder Umsortieren von Schaltplanseiten den Undo-Puffer löscht, während das bloße Umschalten zwischen existierenden Seiten dies nicht tut.
Will man Symbole, Devices oder Packages editieren, dann ist zuerst eine Bibliothek mit OPEN zu öffnen und dann der entsprechende EDIT-Befehl zu geben.
Dieser Befehl prüft Schaltpläne auf elektrische Fehler. Die Ergebnisse werden im ERRORS Dialog angezeigt.
Bitte beachten Sie, dass der ERC Unterschiede zwischen impliziten Power-Pins und
Supply-Pins im Schaltplan und den tatsächlichen Signalverbindungen im Layout
feststellen kann. Solche Unstimmigkeiten können entstehen, wenn Sie die
Supply-Pins im Schaltplan modifizieren, nachdem Sie mit dem BOARD-Befehl eine
Platinen-Datei erzeugt haben. Wenn die Power-Pins nur "implizit" verbunden sind,
können diese Änderungen nicht immer in das Layout übertragen werden.
Werden solche Fehler festgestellt, bleibt die Forward&Back-Annotation
weiterhin erhalten. Allerdings müssen die Supply-Pins überprüft werden!
ERRORS
Siehe auch ERC,
DRC
ERRORS CLEAR
Zur Auswertung der vom ERC bzw. DRC gefundenen Fehler dient der Befehl ERRORS. Wird er aktiviert, dann öffnet sich ein Fenster, in dem alle gefundenen Fehler aufgelistet sind. Wurde für die geladene Zeichnung noch kein ERC bzw. DRC durchgeführt, so wird zunächst die entsprechende Prüfung automatisch gestartet.
Die Liste im ERRORS-Dialog besteht aus bis zu vier Abschnitten, die jeweils Konsistenzfehler, Fehler, Warnungen bzw. Gebilligte Meldungen enthalten.
Selektiert man einen Eintrag aus der Liste, wird die jeweilige Meldung durch eine Bezugslinie im Zeichenfenster angezeigt.
Ein Doppelklick auf einen Fehlereintrag zentriert die Zeichenfläche auf die Position des Fehlers. Aktivieren Sie die Option "Zentriert", geschieht dies automatisch.
Die Liste kann auch durch Eingabe des Befehls
ERRORS CLEARgelöscht werden.
Der EXPORT-Befehl dient dazu, EAGLE-Daten in Form von Textdateien (ASCII-Dateien) zur Verfügung zu stellen oder Grafikdaten aus der aktuellen Zeichnung zu erzeugen.
Standardmäßig wird die erzeugte Datei in das Projekt-Verzeichnis geschrieben.
Der EXPORT-Befehl erzeugt folgende Textdateien:
Wenn mit EXPORT eine Bibliothek in eine Script-Datei verwandelt und dieses anschließend wieder eingelesen wird, so sollte dafür eine NEUE (leere!) Bibliothek geöffnet werden, da es sonst vorkommen kann, dass Objekte mehrfach definiert werden! Der Vorgang des Script-Einlesens kann u. U. erheblich beschleunigt werden, wenn vorher
Set Undo_Log Off;eingegeben wird (nicht vergessen, es nachher wieder einzuschalten, da sonst kein Undo möglich ist!).
.bmp | Windows-Bitmap-Datei | |
.png | Portable-Network-Graphics-Datei | |
.pbm | Portable-Bitmap-Datei | |
.pgm | Portable-Grayscale-Bitmap-Datei | |
.ppm | Portable-Pixelmap-Datei | |
.tif | TIFF-Datei | |
.xbm | X-Bitmap-Datei | |
.xpm | X-Pixmap-Datei |
Der resolution-Parameter definiert die Bildauflösung (in 'dpi').
Ist filename der besondere Name CLIPBOARD (egal ob groß- oder klein geschrieben), wird das Bild in die Zwischenablage des Systems kopiert.
Das optionale Schlüsselwort MONOCHROME erzeugt ein schwarz/weißes Bild.
Das optionale Schlüsselwort WINDOW erzeugt ein Bild des momentan im
Editor-Fenster sichtbaren Ausschnitts. Ohne dieses Schlüsselwort enthält das
Bild die gesamte Zeichnung.
FRAME
Siehe auch LABEL
Der FRAME-Befehl erzeugt einen Rahmen mit nummerierten Spalten und Zeilen. Die beiden Punkte definieren zwei gegenüberliegende Ecken des Rahmens. Mit der mittleren Maustaste können Sie den Layer wählen, in den der Rahmen gezeichnet wird.
Der columns-Parameter definiert die Zahl der Spalten des Rahmens. Es können bis zu 127 Spalten verwendet werden. Standardmäßig werden die Spalten von links nach rechts durchnummeriert. Falls der Wert für columns negativ ist, läuft die Nummerierung von rechts nach links.
Der rows-Parameter definiert die Zahl der Zeilen des Rahmens. Es können bis zu 26 Zeilen verwendet werden. Die Zeilen werden von oben nach unten mit Buchstaben bezeichnet, beginnend mit 'A'. Falls der Wert für rows negativ ist, läuft die Bezeichnung von unten nach oben. Wird rows angegeben, so muss vorher auch columns angegeben werden.
Wird der borders-Parameter angegeben, so legt dieser fest auf welchen Seiten des Rahmens ein Rand mit Zahlen bzw. Buchstaben angezeigt wird. Gültige Werte hierfür sind Left, Top, Right und Bottom. Standardmäßig wir der Rand an allen vier Seiten des Rahmens angezeigt. Sobald eine dieser Optionen angegeben wird, wird der Rand nur an den gewünschten Seiten dargestellt. Die speziellen Werte None und All können benutzt werden um an keiner bzw. allen Seiten einen Rand darzustellen.
Eine Zeichnung kann zwar mehrere Rahmen enthalten, für die Ermittlung der Positionen von Bauteilen und Netzen wird aber immer nur der erste benutzt. Diese Positionen können zum Beispiel in einem User Language Programm verwendet werden um eine Liste aller Bauteile mit Ihren Positionen im jeweiligen Rahmen auszugeben. Sie werden auch benutzt zur automatischen Berechnung von Querverweisen bei Labels.
Aufgrund der speziellen Bedeutung des Rahmens hat dieser keine eigene Rotation und reagiert auch nicht auf den ROTATE-Befehl
Ein Rahmen kann direkt in eine Board- oder Schaltplanzeichnung eingefügt werden. Normalerweise werden Sie aber eher ein spezielles Symbol bzw. Package erzeugen, welches eventuell auch noch ein Schriftfeld enthält, und das Sie dann in allen Ihren Zeichnungen verwenden können. Die mitgelieferte Bibliothek "frames" enthält bereits einige solcher Zeichnungsrahmen.
FRAME 10 5 TOP LEFT erzeugt einen Rahmen mit 10 Spalten (nummeriert von links nach rechts) und 5 Zeilen (markiert von oben nach unten mit 'A' bis 'E'), bei dem die Spalten- und Zeilenmarkierungen nur am oberen und linken Rand dargestellt werden.
Mit diesem Befehl kann man Gates in einem Schaltplan vertauschen. Dabei müssen die beiden Gates identisch sein (dieselben Pins haben) und in der Device-Definition denselben Swaplevel (größer als 0) bekommen haben. Sind diese Bedingungen erfüllt, können auch Gates aus unterschiedlichen Devices vertauscht werden.
Der als Parameter anzugebende Name ist der im Schaltplan sichtbare Name (z. B. U1A für Gate A im Bauteil U1).
Wird ein Bauteil durch den GATESWAP-Befehl "unbenutzt", wird
es automatisch aus dem Schaltplan entfernt.
GRID
Siehe auch SCRIPT
GRID;
Mit dem GRID-Befehl definiert man, ob und wie das Raster auf dem Bildschirm dargestellt wird. Ausserdem legt dieser Befehl die verwendete Rastereinheit fest.
GRID;schaltet das Raster ein bzw. aus.
Objekte lassen sich nur auf dem eingestellten Raster plazieren. Für Platinen im Zollraster darf deshalb z. B. kein mm-Raster verwendet werden.
Folgende options sind möglich:
GRID ON; | Raster darstellen | |
GRID OFF; | Raster ausschalten | |
GRID DOTS; | Raster als Punkte darstellen | |
GRID LINES; | Raster als Linien darstellen | |
GRID MIC; | Rastereinheit ist Mikrometer | |
GRID MM; | Rastereinheit ist mm | |
GRID MIL; | Rastereinheit ist Mil (0.001 Inch) | |
GRID INCH; | Rastereinheit ist Inch (Zoll) | |
GRID FINEST; | Raster auf kleinstmöglichen Wert einstellen (1/10000 mm) | |
GRID grid_size; | Rasterabstand in der aktuellen Einheit | |
GRID LAST; | Setzt die Grid-Parameter auf die zuletzt | |
eingestellten Werte | ||
GRID DEFAULT; | Einstellung auf Standardwerte | |
GRID grid_size grid_multiple; | ||
grid_size = Rasterabstand | ||
grid_multiple = Rasterfaktor | ||
GRID ALT ...; | Definiert das alternative Grid |
Grid mm; Set Diameter_Menu 1.0 1.27 2.54 5.08; Grid Last;In diesem Fall kann man zur zuletzt eingestellten Grid-Definition zurückkehren, ohne sie zu kennen.
GRID mm 1 10;gibt an, dass ein Rasterabstand von 1 mm eingestellt und jede zehnte Rasterlinie angezeigt werden soll.
Beim GRID-Befehl sind auch mehrere Parameter zulässig:
GRID inch 0.05 mm;Der erste Zahlenwert im GRID-Befehl entspricht dem Rasterabstand, der zweite (falls vorhanden) dem Rasterfaktor.
Hier wird das Raster zunächst auf 0.05 Zoll eingestellt, dann wird die Koordinatenanzeige auf mm umgestellt. Die Koordinaten werden in diesem Fall zwar in mm angezeigt, trotzdem ist das Raster nach wie vor auf 1/20 Zoll eingestellt!
GRID DEFAULT;Setzt das Raster auf den Standardwert für den aktuellen Zeichnungstyp.
GRID mil 50 2 lines on alt mm 1 mil;Definiert ein 50 mil Raster das als Linien dargestellt wird (wobei nur jede zweite Linie sichtbar ist) und setzt das alternative Raster auf eine Größe von 1 mm, angezeigt in mil.
Ein Druck auf die Alt-Taste schaltet auf das alternative Grid um. Dies kann typischerweise ein feineres Raster als das normale sein, wodurch es zum Beispiel schnell und einfach möglich ist etwas in einem dicht belegten Gebiet fein zu positionieren, wofür das normal Raster zu grob wäre. Das alternative Grid bleibt so lange aktiv, wie die Alt-Taste gedrückt gehalten wird.
Die Syntax zur Bearbeitung dieser Aliase ist:
GRID = MyGrid inch 0.1 lines on
Definiert den Alias "MyGrid" der, wenn er wie in
GRID myg
benutzt wird, das aktuelle Grid auf die angegebenen Parameter einstellt.
Beachten Sie bitte die abgekürzte Verwendung des Aliases,
und dass die Groß-/Kleinschreibung keine Rolle spielt.
GROUP
Siehe auch CHANGE,
CUT,
PASTE,
MIRROR,
DELETE
GROUP ALL
GROUP;
Mit dem GROUP-Befehl definiert man eine Gruppe von Objekten, auf die man anschließend bestimmte Befehle anwenden kann. Natürlich kann auch eine ganze Zeichnung als Gruppe definiert werden.
Die Objekte selektiert man, indem man nach Aktivieren des GROUP-Befehls mit der Maus ein Rechteck aufzieht oder ein Polygon zeichnet, das mit dem Betätigen der rechten Maustaste geschlossen wird. In die Gruppe werden nur Objekte aus den sichtbaren Layern übernommen.
Das Schlüsselwort ALL kann dazu benutzt werden eine Gruppe zu definieren, die die gesamte Zeichnungsfläche einschließt.
Zur Gruppe gehören:
Die Gruppendefinition bleibt wirksam, bis eine neue Zeichnung geladen wird oder bis der Befehl
GROUP;ausgeführt wird.
Wird im HELP-Befehl ein Befehlsname (command) angegeben, dann erhält man die Beschreibung dieses Befehls.
HELP GRID;Es erscheint die Beschreibung des GRID-Befehls.
Mit diesem Befehl definiert man Bohrungen ohne Durchkontaktierung in Platinen oder Packages. Der Parameter drill gibt den Bohrdurchmesser in der aktuellen Einheit an. Er darf maximal 0.51602 Zoll (ca. 13.1 mm) betragen.
HOLE 0.20 Falls die eingestellte Maßeinheit "Inch" ist, hat das Hole einen Durchmesser von 0.20 Zoll.
Der eingegebene Bohrdurchmesser (gilt auch für Pads und Vias) bleibt für nachfolgende Operationen erhalten. Er kann mit dem Befehl
CHANGE DRILL value verändert werden.
Ein Hole kann nur selektiert werden, wenn der Holes-Layer eingeblendet ist (DISPLAY).
Eine Bohrung (Hole) erzeugt das zugehörige Bohrsymbol im Layer Holes und einen Kreis mit dem entsprechenden Durchmesser im Layer Dimension. Die Zuordnung von Symbolen zu bestimmten Bohrdurchmessern kann im "Optionen/Einstellungen/Bohrsymbole" Dialog geändert werden. Der Kreis im Dimension-Layer ist besonders für den Autorouter wichtig, der den eingestellten Mindestabstand zwischen Vias/Wires und Dimension-Linien damit auch zum Bohrloch einhält.
In Versorgungs-Layern erzeugen Holes Annulus-Symbole.
In den Layern tStop und bStop erzeugen Holes die Lötstopmaske, deren
Durchmesser sich aus den Design Rules ergibt.
INFO
Siehe auch CHANGE,
SHOW
INFO name ..
Der INFO-Befehl gibt zu einem Objekt umfassende Informationen, z.B. Wire-Breite, Layer und so weiter. In diesem Dialog können die Objekt-Eigenschaften auch verändert werden.
Bauteile, Pads, Smds, Pins und Gatter lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen bestehende Name angegeben werden.
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination
aus Bauteilname und Attributname angegeben wird, wie etwa R5>VALUE.
INVOKE
Siehe auch COPY,
ADD
INVOKE Part_Name Gate_Name orientation
Addlevel und Orientation siehe ADD-Befehl.
Will man gezielt ein bestimmtes Gate eines Bauelements in den Schaltplan holen (z.B. ein Power-Gate mit Addlevel Request), dann benutzt man den INVOKE-Befehl.
Ein Gate kann man aktivieren, indem man
Wird im Dialog ein bereits aktiviertes Gate selektiert, so wechselt der Default-Button zu "Anzeigen" und ein Klick darauf zoomt das Editor-Fenster auf das selektierte Gate, wobei wenn nötig auch auf die entsprechende Seite gewechselt wird.
Löschen von Junctions, siehe DELETE-Befehl.
Mit diesem Befehl lassen sich die Kreuzungspunkte zusammengehöriger Netze mit einem Punkt markieren. Ein Junction-Punkt lässt sich nur auf einem Netz plazieren. Wird ein Junction-Punkt an einer Stelle gesetzt, an der sich unterschiedliche Netze kreuzen, dann wird der Benutzer gefragt, ob er die Netze verbinden will.
Wird eine Netzlinie auf einem Punkt abgesetzt auf dem schon mindestens zwei weitere Netzlinien und/oder Pins liegen, wird automatisch ein Verbindungspunkt (Junction) gesetzt. Diese Funktion kann über "SET AUTO_JUNCTION OFF;" oder durch Deselektieren des Punkts "Junctions automatisch setzen" im Menü "Optionen/Einstellungen/Verschiedenes" abgeschaltet werden.
Auf dem Bildschirm werden Junctions immer mit mindestens fünf
Pixel Durchmesser dargestellt, damit sie auch in kleinen Zoom-Stufen
noch sichtbar sind.
LABEL
Siehe auch NAME,
BUS
Mit diesem Befehl kann man den Namen eines Busses oder Netzes im Schaltplan an eine beliebige Stelle plazieren. Der erste Mausklick sorgt dafür, dass der Name des selektierten Busses oder Netzes "am Mauszeiger hängenbleibt". Der Text kann dann mit der rechten Maustaste rotiert werden. Mit der mittleren Maustaste wählt man den Ziel-Layer für den Label-Text aus. Der zweite Mausklick mit der linken Maustaste plaziert den Text an eine beliebige Stelle.
Als Option kann die Schreibrichtung (orientation) auch textuell angegeben werden. Das ist vor allem für Script-Dateien sinnvoll. Die entsprechenden Schlüsselwörter sind im ADD-Befehl aufgeführt (R0, R90 usw.).
Es können beliebig viele Labels je Bus/Signal plaziert werden.
Label-Texte lassen sich nicht mit CHANGE TEXT ändern.
Labels werden vom Programm wie Texte behandelt, aber ihr "Wert" entspricht immer dem Namen des zugehörigen Busses oder Netzes. Ändert man den Namen eines Busses/Netzes mit dem NAME-Befehl, dann ändern sich automatisch alle zugehörigen Labels.
Selektiert man beim SHOW-Befehl einen Bus, ein Netz oder ein Label, dann werden alle zugehörigen Busse, Netze bzw. Labels hell dargestellt.
Das Format, in welchem ein Querverweis-Label angezeigt wird, kann über die "Format für Querverweis-Labels" Zeichenfolge im Dialog "Optionen/Einstellungen/Verschiedenes" oder über den SET Befehl festgelegt werden. Folgende Platzhalter sind definiert und können in beliebiger Reihenfolge verwendet werden:
%F | aktiviert das Zeichnen eines Rahmens um das Label | |
%N | der Name des Netzes | |
%S | die nächste Seitennummer | |
%C | die Spalte auf der nächsten Seite | |
%R | die Zeile auf der nächsten Seite |
Das Standard-Format ist "%F%N/%S.%C%R". Neben den definierten Platzhaltern können Sie auch beliebige andere ASCII-Zeichen verwenden.
Die Werte für Spalte und Zeile sind nur verfügbar, wenn auf der nächsten Seite, auf der das Netz vorkommt, ein Zeichnungsrahmen platziert wurde. Wird %C oder %R benutzt und es befindet sich kein Rahmen auf der Seite, zeigen sie ein Fragezeichen ('?') an.
Bei der Ermittlung der Spalte und Zeile eines Netzes auf einer Schaltplanseite wird zunächst die Spalte und dann die Zeile innerhalb dieser Spalte betrachtet. Hierbei haben XREF-Labels Vorrang vor normalen Labels, und diese wiederum Vorrang vor Netz-Wires. Für höhere Seitennummern werden die Rahmen-Koordinaten des am weitesten links oben liegenden Feldes genommen, während für niedrigere Nummern die des am weitesten rechts unten liegenden Feldes genommen werden.
Die Orientierung eines Querverweis-Labels bestimmt ob es auf eine "höhere" oder "niedrigere" Seitennummer verweist. Labels mit einer Orientierung von R0 oder R270 zeigen zum rechten bzw. unteren Rand der Zeichnung und beziehen sich daher auf eine höhere Seitennummer. Entsprechend verweisen Labels mit einer Orientierung von R90 oder R180 auf eine niedrigere Seitennummer. Hat ein Label eine Orientierung von R0 oder R270, aber das Netz, an dem es hängt, kommt auf keiner höheren Seite vor, so wird stattdessen ein Verweis auf die nächst niedrigere Seite angezeigt (entsprechendes gilt für R90 und R180). Kommt das Netz ausschließlich auf der aktuellen Seite vor, so wird keinerlei Querverweis angezeigt, sondern nur der Netzname (mit Rahmen, falls das Format den %F Platzhalter enthält).
Ein Querverweis-Label, welches auf das Ende eines Netz-Wires platziert wird, verbindet sich mit dem Wire, so dass sich der Wire mit dem Label mitbewegt und umgekehrt.
Das Format für Querverweis-Labels wird in der Schaltplan-Zeichnung gespeichert.
Ein Querverweis-Label kann entweder mit dem CHANGE-Befehl oder über seinen Eigenschaften-Dialog in ein normales Label verwandelt werden.
LAYER Layer; WIRE (1 2) (3 4);hier nicht funktioniert. Der Layer muss gewählt werden, wenn der LABEL-Befehl bereits aktiv ist. Dies kann folgendermaßen geschehen:
LABEL Parameter LAYER Layer weitere Parameter;Beachten Sie, dass die LABEL-Zeile nicht mit einem ';' abgeschlossen ist, und dass der LAYER-Befehl in einer neuen Zeile beginnt.
LABEL LAYER Layer;setzen den Layer für nachfolgende LABEL-Befehle.
Der ROUTE-Befehl ändert den aktiven Layer automatisch.
Bestimmte Layer stehen nicht in allen Betriebsarten zur Verfügung, da sie nicht überall einen Sinn haben.
Bitte beachten Sie, dass von den Signal-Layern (1 bis 16) nur diejenigen zur Verfügung stehen, die im Layer-Setup in den Design Rules eingetragen sind.
LAYER 101 BEISPIEL;erzeugt einen neuen Layer mit der Nummer 101 und dem Namen BEISPIEL.
Werden in einer Zeichnung Bibliothekselemente plaziert (mit ADD oder REPLACE), die zusätzliche Layer enthalten, dann werden diese Layer automatisch in der Zeichnung angelegt.
Die vordefinierten Layer haben spezielle Bedeutung. Man kann zwar ihren Namen ändern, aber ihre besondere Funktion bleibt aufgrund ihrer Nummer erhalten.
Wenn Sie eigene Layer definieren, sollten Sie nur die Layer-Nummern ab 100 verwenden. Bei kleineren Nummern kann es sein, dass Sie in späteren EAGLE-Versionen spezielle Bedeutung bekommen.
LAYER -103;löscht den Layer mit der Nummer 103. Voraussetzung ist, dass der Layer leer ist. Ist das nicht der Fall, wird die Fehlermeldung
"layer is not empty: #"
ausgegeben, wobei # die Layer-Nummer repräsentiert. Falls Sie jegliche Fehlermeldungen beim Löschen eines Layers vermeiden wollen, so können Sie die Option '??' angeben. Das kann in Scripts nützlich sein, die bestimmte Layer zu löschen versuchen, wo es aber keinen Fehler darstellt wenn ein Layer nicht leer oder überhaupt nicht vorhanden ist.
Die vordefinierten Layer lassen sich nicht löschen.
Alle zu diesem Signal gehörenden Pads und Vias werden vom RATSNEST-Befehl und dem Autorouter implizit als verbunden angenommen.
Versorgungs-Layer werden "invertiert" betrachtet, das heisst alle auf einem solchen Layer sichtbaren Objekte resultieren in "kupferfreien" Zonen auf der Platine. Das Programm generiert automatisch Thermal- und Annulus-Symbole um die Pads und Vias an diese Layer anzuschließen bzw. sie davon zu isolieren.
Sie sollten keine zusätzlichen Objekte in einen Versorgungs-Layer zeichnen, ausser zum Beispiel Wires entlang der Platinenumrisse, wodurch verhindert wird, dass das Kupfer bis zu den Kanten der fertigen Platine reicht (was zu Kurzschlüssen durch metallene Gehäuse oder Befestigungsschrauben führen könnte). Beachten Sie bitte, dass keine Prüfungen stattfinden, ob ein Versorgungs-Layer auch wirklich alle Pads und Vias verbindet. Falls zum Beispiel ein vom Benutzer gezeichnetes Objekt ein Pad isoliert, das an diesen Versorgungs-Layer angeschlossen werden sollte, wird nicht automatisch eine Luftlinie für diese (fehlende) Verbindung erzeugt. Das gleiche gilt wenn mehrere Annulus-Symbole einen "Ring" um ein Thermal-Symbol bilden (und dadurch das Pad von seinem Signal isolieren). Ebenso ist zu beachten, dass sich die Abmessungen der Annulus-Symbole in einem Supply-Layer ausschließlich nach dem in den Design Rules unter "Supply" angegebenen Wert für "Annulus" richten, und dass hier weder die unter "Clearance" noch die in den Netzklassen angegebenen Mindestabstände eingehen.
Eine sicherere und flexiblere Methode um Versorgungs-Layer zu realisieren bietet der POLYGON-Befehl.
1 Top | Leiterbahnen oben | |
2 Route2 | Innenlage (Signal- oder Versorgungs-Layer) | |
3 Route3 | Innenlage (Signal- oder Versorgungs-Layer) | |
4 Route4 | Innenlage (Signal- oder Versorgungs-Layer) | |
5 Route5 | Innenlage (Signal- oder Versorgungs-Layer) | |
6 Route6 | Innenlage (Signal- oder Versorgungs-Layer) | |
7 Route7 | Innenlage (Signal- oder Versorgungs-Layer) | |
8 Route8 | Innenlage (Signal- oder Versorgungs-Layer) | |
9 Route9 | Innenlage (Signal- oder Versorgungs-Layer) | |
10 Route10 | Innenlage (Signal- oder Versorgungs-Layer) | |
11 Route11 | Innenlage (Signal- oder Versorgungs-Layer) | |
12 Route12 | Innenlage (Signal- oder Versorgungs-Layer) | |
13 Route13 | Innenlage (Signal- oder Versorgungs-Layer) | |
14 Route14 | Innenlage (Signal- oder Versorgungs-Layer) | |
15 Route15 | Innenlage (Signal- oder Versorgungs-Layer) | |
16 Bottom | Leiterbahnen unten | |
17 Pads | Pads (bedrahtete Bauteile) | |
18 Vias | Vias (durchgehend) | |
19 Unrouted | Luftlinien | |
20 Dimension | Platinen-Umrisse (und Kreise für Holes) | |
21 tPlace | Bestückungsdruck oben | |
22 bPlace | Bestückungsdruck unten | |
23 tOrigins | Aufhängepunkte oben (Kreuz automatisch generiert) | |
24 bOrigins | Aufhängepunkte unten (Kreuz automatisch generiert) | |
25 tNames | Servicedruck oben (Bauteile-Namen, NAME) | |
26 bNames | Servicedruck unten (Bauteile-Namen, NAME) | |
27 tValues | Bauteile-Werte oben (VALUE) | |
28 bValues | Bauteile-Werte unten (VALUE) | |
29 tStop | Lötstopmaske oben (automatisch generiert) | |
30 bStop | Lötstopmaske unten (automatisch generiert) | |
31 tCream | Lotpaste oben | |
32 bCream | Lotpaste unten | |
33 tFinish | Veredelung oben | |
34 bFinish | Veredelung unten | |
35 tGlue | Klebemaske oben | |
36 bGlue | Klebemaske unten | |
37 tTest | Test- und Abgleichinformationen oben | |
38 bTest | Test- und Abgleichinformationen unten | |
39 tKeepout | Sperrflächen für Bauteile oben | |
40 bKeepout | Sperrflächen für Bauteile unten | |
41 tRestrict | Sperrflächen für Leiterbahnen oben | |
42 bRestrict | Sperrflächen für Leiterbahnen unten | |
43 vRestrict | Sperrflächen für Vias | |
44 Drills | Bohrungen, durchkontaktiert | |
45 Holes | Bohrungen, nicht durchkontaktiert | |
46 Milling | CNC-Fräser-Daten zum Schneiden der Plat. | |
47 Measures | Bemaßungen | |
48 Document | allgemeine Dokumentation | |
49 Reference | Passermarken | |
51 tDocu | Bauteiledokumentation oben | |
52 bDocu | Bauteiledokumentation unten |
91 Nets | Netze | |
92 Busses | Busse | |
93 Pins | Anschlusspunkte für Schaltplansymbole | |
mit Zusatzinformationen | ||
94 Symbols | Umrisse der Schaltplansymbole | |
95 Names | Namen bei Schaltplansymbolen | |
96 Values | Werte/Typenbezeichnung bei Schaltplansymbolen | |
97 Info | Allgemeine Informationen | |
98 Guide | Hilfslinien |
Layer können immer mit ihrem Namen oder Nummer angegeben werden.
LOCK
Siehe auch MIRROR,
MOVE,
ROTATE
SMASH
LOCK name ..
Der LOCK-Befehl kann auf Bauteile in einem Board angewendet werden und verhindert, dass diese bewegt, gedreht oder gespiegelt werden können. Dies ist nützlich für Dinge wie Steckerleisten, die an einer genau festgelegten Stelle montiert werden müssen und nicht unbeabsichtigt verschoben werden dürfen.
Der Aufhängepunkt eines verriegelten Bauteils wird als 'x' dargestellt, um anzuzeigen, dass das Bauteil verriegelt ist.
Wird eine Gruppe bewegt, die verriegelte Bauteile enthält, so bewegen sich diese Bauteile (sowie die an ihren Pads endenden Wires) nicht mit der Gruppe mit.
Losgelöste Texte eines verriegelten Bauteils können weiterhin einzeln bewegt werden, bewegen sich aber nicht als Teil einer Gruppe mit.
Bauteile lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet.
Ein "verriegeltes" Bauteil kann "entriegelt" werden, indem es bei gedrückter
Shift-Taste (und natürlich aktiviertem LOCK-Befehl) angeklickt wird.
MARK
Siehe auch GRID
MARK;
Mit dem MARK-Befehl definiert man einen Punkt in der Zeichenfläche, der als Bezugspunkt zum Ausmessen von Strecken dienen kann. Die Koordinaten relativ zu diesem Punkt werden in der gegenwärtig eingestellten Einheit (GRID) links oben auf dem Bildschirm mit vorangestelltem 'R' angezeigt. Der Bezugspunkt wird als weißes Kreuz dargestellt. Um genau messen zu können, sollten Sie vorher ein Raster einstellen das fein genug ist.
Die Eingabe 'MARK;' schaltet die Marke ein oder aus.
MENU
Siehe auch ASSIGN,
SCRIPT
MENU;
Mit dem MENU-Befehl kann man das Text-Menü nach eigenen Wünschen ändern.
Die vollständige Spezifikation für den option-Parameter ist:
option := command | menu | delimiter command := text [ ':' text ] menu := text '{' option [ '|' option ] '}' delimiter := '---'Eine Option des MENU-Befehls kann entweder ein einfacher Befehl sein, wie z. B.
MENU Display Grid;der die Befehle Display und Grid als Inhalt des Text-Menüs definiert; ein selbstdefinierter Befehl sein, wie z. B.
MENU 'MyDisp : Display None Top Bottom Pads Vias;' 'MyGrid : Grid mil 100 lines on;';Das Text-Menü enthält die beiden selbstdefinierten Befehle MyDisp und MyGrid. Nach Anklicken eines Buttons im Menü wird die nach ':' definierte Befehlssequenz der entsprechenden Option ausgeführt; oder eine Schaltfläche erzeugen, die Untermenüs enthalten kann, wie z. B.
MENU 'Grid { Fine : Grid inch 0.001; | Coarse : Grid inch 0.1; }';Es wird ein Button mit dem Namen Grid erzeugt, der nach dem Anklicken ein Untermenü mit den beiden Optionen Fine und Coarse enthält.
Die besondere Option '---' kann man verwenden, um einen Trennstrich im Menü zu erzeugen. Das fördert die Übersichtlichkeit im Menü.
Bitte beachten Sie, dass jede option, die mehr als ein Wort oder einen Text, der als Befehl interpretiert werden kann, enthält, in einfache Hochkommas eingeschlossen werden muss. Wenn Sie den MENU-Befehl in einer Script-Datei verwenden, um ein komplexes Text-Menü zu definieren und dabei die Menü-Definition zur besseren Lesbarkeit über mehrere Zeilen verteilen wollen, ist es notwendig die Zeilen mit einem Backslash ('\') zu beenden, wie z. B.
MENU 'Grid {\ Fine : Grid inch 0.001; |\ Coarse : Grid inch 0.1;\ }';
MENU Move Delete Rotate Route ';' Edit;erzeugt ein Menü, das die Befehle Move bis Route, den Strichpunkt als Befehlsabschlusszeichen und den Edit-Befehl enthält.
Der Befehl
MENU;stellt wieder das Standard-Menü ein.
Beachten Sie, dass der Eintrag ';' immer im Menü enthalten sein sollte.
Er wird zum Beenden vieler Befehle benötigt.
MIRROR
Siehe auch ROTATE,
LOCK,
TEXT
MIRROR name..
Mit dem MIRROR-Befehl können Objekte an der y-Achse gespiegelt und damit z.B. auf der Lötseite der Platine plaziert werden.
Bauteile, Pads, Smds und Pins lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet.
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination aus Bauteilname und Attributname angegeben wird, wie etwa R5>VALUE.
Das Spiegeln von Packages ist nur mit eingeblendetem tOrigins- bzw. bOrigins-Layer möglich.
Beim Spiegeln von Elementen werden die angeschlossenen Wires auf den Außenlagen mitgespiegelt (Achtung auf Kurzschlüsse!). Vias werden dabei nicht automatisch gesetzt.
Beachten Sie bitte, dass Objekte auf Innenlagen (2...15) beim Spiegeln ihren Layer nicht wechseln. Gleiches gilt auch für Vias.
Bauteile können nicht gespiegelt werden, wenn sie gelockt sind, oder wenn eines ihrer angeschlossenen Pads aus der erlaubten Fläche hinausstehen würde (falls sie eine eingeschränkte Version von EAGLE verwenden).
Wires, Circles, Pads und Polygone lassen sich nicht explizit spiegeln (als Bestandteile von Gruppen werden sie mitgespiegelt).
Im Schaltplan führt das Spiegeln eines Textes dazu, dass er auf der anderen
Seite seines Aufhängepunktes dargestellt wird; er bleibt aber nach wie vor normal
lesbar.
MITER
Siehe auch SPLIT,
WIRE,
ROUTE,
POLYGON
Der MITER-Befehl dient dazu die Verbindungsstelle zweier Wires abzuschrägen. Die beiden existierenden Wires müssen dazu auf dem gleichen Layer liegen, die gleiche Breite und den gleichen Wire-Style haben.
Der MOVE-Befehl bewegt das Objekt, das dem Mauszeiger bzw. dem angegebenen Koordinatenpunkt am nächsten liegt.
Bauteile, Pads, Smds, Pins und Gatter lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen bestehende Name angegeben werden.
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination aus Bauteilname und Attributname angegeben wird, wie etwa R5>VALUE.
Das Bewegen von Elementen ist nur mit eingeblendetem tOrigins- bzw. bOrigins-Layer möglich.
Der MOVE-Befehl wirkt nur auf sichtbare Layer (siehe DISPLAY).
Wires, die an einem Element hängen, lassen sich an diesem Ende nicht bewegen. Beim Bewegen von Elementen bewegen sich die angeschlossenen Wires mit, sofern sie Bestandteil eines Signals sind, (Achtung auf Kurzschlüsse!).
Wird ein Objekt mit der linken Maustaste angeklickt und die Taste danach nicht wieder losgelassen, so kann das Objekt sofort bewegt werden ("Click&Drag"). Gleiches gilt für Gruppen bei Verwendung der rechten Maustaste. Es ist dann allerdings nicht möglich das Objekt während des Bewegens zu drehen oder zu spiegeln.
Bauteile können nicht bewegt werden, wenn sie gelockt sind, oder wenn eines ihrer angeschlossenen Pads aus der erlaubten Fläche hinausstehen würde (falls sie eine eingeschränkte Version von EAGLE verwenden).
Wird ein Element bewegt, werden beim Absetzen offene Pins dieses Elements an eventuell vorhandene Netze bzw. andere Pins angeschlossen.
Bewegt man ein Netz auf einen Pin, werden Netz und Pin nicht logisch verbunden, obwohl sie optisch verbunden sind.
Wird ein Wire in der Mitte (nicht an einem seiner Endpunkte) mit gedrückter Ctrl-Taste selektiert, so bleiben die Endpunkte fixiert und der Wire kann gebogen werden, wodurch er zum Kreisbogen wird. Auf die gleiche Weise kann die Krümmung eines Kreisbogens (der im Grunde nichts anderes als ein Wire ist) verändert werden.
Wird ein Rechteck an einer seiner Ecken mit gedrückter Ctrl-Taste selektiert, so kann die Größe des Rechtecks sowohl in der Breite als auch in der Höhe verändert werden. Beim Selektieren einer Kante mit gedrückter Ctrl-Taste läßt sich nur die Breite bzw. die Höhe verändern. Selektiert man das Rechteck an seinem Mittelpunkt mit gedrückter Ctrl-Taste, so wird dieser an den Mauszeiger gezogen und in das aktuelle Raster geschnappt.
Wird ein Kreis mit gedrückter Ctrl-Taste an seinem Umfang selektiert, so bleibt sein Mittelpunkt fix und der Durchmesser kann verändert werden. Wird der Mittelpunkt auf diese Weise selektiert, so wird dieser an den Mauszeiger gezogen und in das aktuelle Raster geschnappt.
Beachten Sie, das nur solche Wires verschoben werden, die beide Enden in der Gruppe haben, und dass Bauteile, die verschoben werden, alle ihre elektrischen Verbindungen mitnehmen, auch wenn ein an einem Pin angeschlossener Net-Wire nicht verschoben wird, da sein anderes Ende nicht in der Gruppe liegt. Falls ein Pin auf der neuen Seite eine elektrische Verbindung hat, aber kein anderer Pin, Wire oder Junction daran angeschlossen ist um dies sichtbar zu machen, so wird automatisch eine Junction an dieser Stelle generiert.
Dieser Vorgang kann sogar in einem Script ausgeführt werden. Zum Beispiel würde
edit .s1 group (1 1) (1 2) (2 2) (2 1) (1 1) move (> 0 0) edit .s2 (0 0)auf die erste Seite schalten, eine Gruppe definieren, diese mit MOVE selektieren, auf die zweite Seite schalten und die Gruppe absetzen. Die Koordinaten (0 0) am Schluss sind für den implizit gestarteten MOVE-Befehl.
Falls Sie lediglich die Reihenfolge der Seiten verändern wollen, so können Sie
das mit dem EDIT-Befehl tun.
NAME
Siehe auch SHOW,
SMASH,
VALUE
NAME new_name
NAME old_name new_name
Mit den NAME-Befehl kann man den Namen des selektierten Objektes anzeigen und (in einem Popup-Menü) ändern.
Bauteile, Pads, Smds, Pins und Gatter lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet.
nur das selektierte Segment,
alle Segmente auf dieser Seite,
alle Segmente auf allen Seiten
mit der Maus oder durch Eingabe des entsprechenden Hot-Keys umbenannt werden sollen. Je nachdem ob das Netz bzw. der Bus nur auf dieser Seite definiert ist oder aus einem oder mehreren Segmenten besteht, entfallen einzelne Punkte des Menüs bzw. das gesamte Menü. Existiert der neue Name bereits (auf dieser oder einer anderen Seite), wird vorher noch abgefragt, ob die beiden Netze bzw. Busse verbunden werden sollen.
Mit dem NET-Befehl zeichnet man Einzelverbindungen (Netze) in den Net-Layer eines Schaltplans. Der erste Mausklick gibt den Startpunkt des Netzes an, der zweite setzt die Linie ab. Zwei Mausklicks am selben Punkt beenden das Netz.
Wird ein Netz an einem Punkt abgesetzt, an dem schon ein anderes Netz, ein Bus oder ein Pin liegt, endet die Netzlinie hier. Diese Funktion kann über "SET AUTO_END_NET OFF;" oder durch Deselektieren der Option "Netze und Busse automatisch beenden" im Menü "Optionen/Einstellungen/Verschiedenes" abgeschaltet werden.
Wird eine Netzlinie an einem Punkt abgesetzt an dem mindestens zwei Netzlinien und/oder Pins liegen, wird automatisch ein Verknüpfungspunkt (Junction) gesetzt. Diese Funktion kann über "SET AUTO_JUNCTION OFF;" oder durch Deselektieren der Option "Junctions automatisch setzen" im Menü "Optionen/Einstellungen/Verschiedenes" abgeschaltet werden.
Wird der curve oder @radius Parameter angegeben, so kann ein Kreisbogen als Teil des Netzes gezeichnet werden (siehe die ausführliche Beschreibung beim WIRE-Befehl).
Gibt man keinen Namen im NET-Befehl an und startet man auch nicht auf einem Bus, dann wird ein Name der Form N$1 für das Netz automatisch vergeben.
Netze oder Teile davon, die auf verschiedenen Seiten eines Schaltplans liegen und denselben Namen haben, sind miteinander verbunden.
Netznamen sollten kein Komma (',') enthalten, da dieses das Trennzeichen für Busse ist.
SET NET_WIRE_WIDTH width;voreinstellen (Default: 6 Mil).
!RESETwas als
_____ RESETdargestellt würde. Einzelheiten hierzu finden Sie in der Beschreibung des TEXT-Befehls.
Der OPEN-Befehl öffnet eine existierende Bibliothek oder legt eine neue an, falls noch keine mit dem angegebenen Namen existiert. Danach kann ein existierendes oder ein neues Symbol, Device oder Package editiert werden.
Dieser Befehl ist in erster Linie für Script-Dateien erforderlich.
OPTIMIZE
Siehe auch SET,
SPLIT,
MOVE,
ROUTE
OPTIMIZE signal_name ..
OPTIMIZE ..
Der OPTIMIZE-Befehl fasst Wire-Segmente, die in einer Linie liegen, zu einem Segment zusammen. Voraussetzung dafür ist, dass sich die Segmente im selben Layer befinden und dass Sie dieselbe Breite haben.
Werden Signalnamen angegeben oder wird ein Signal selektiert, so wirkt der Befehl nur auf die entsprechenden Signale.
SET OPTIMIZING OFF;abgeschaltet, oder beim SPLIT-Befehl wurden zwei Mausklicks auf denselben Punkt eines Wires gesetzt.
Der OPTIMIZE-Befehl arbeitet unabhängig von der Einstellung der Set-Variablen Optimizing, d.h. er funktioniert auch, wenn
SET OPTIMIZING OFF;eingegeben wurde.
Dieser Befehl wird im Device-Editor verwendet um eine Gehäuse-Variante zu definieren, zu löschen oder umzubenennen. Im Schaltplan- oder Board-Editor verhält sich der PACKAGE-Befehl genau so wie "CHANGE PACKAGE".
Ohne Angabe von Parametern öffnet sich ein Dialog, der es erlaubt ein Gehäuse zu wählen und dessen Varianten-Namen zu definieren.
Die Parameter pname vname verknüpfen das Gehäuse pname mit der neuen Variante vname.
In der Schreibweise pname@lname vname wird das Package pname aus der Bibliothek lname geholt und eine neue Gehäuse-Variante erzeugt. Dies kann ebenso über das Kontext-Menü der Bibliotheksobjekte oder über Drag&Drop aus der Baumansicht des Control Panels erfolgen.
Der einzelne Parameter name ruft die schon vorhandene Package-Variante auf. Wurde bisher noch keine Package-Variante definiert und existiert ein Package mit dem angegebenen Namen in der Bibliothek, wird mit diesem Package eine neue Package-Variante mit Namen '' (ein "leerer" Name) erzeugt (aus Kompatibilitätsgründen zu Version 3.5 notwendig).
Gibt man -old_name new_name an, wird die Package-Variante old_name umbenannt in new_name.
Der einzelne Parameter -name löscht die angegebene Package-Variante.
Der Name der Package-Variante wird dem Device-Set-Namen hinzugefügt, so dass ein eindeutiger Device-Name entsteht. Enthält der Device-Set-Name das Zeichen '?', wird dieser Platzhalter durch den Package-Varianten-Namen ersetzt. Bitte beachten Sie, dass die Package-Variante erst nach der Technology-Funktion bearbeitet wird. Wenn der Device-Set-Name weder '*' noch '?' enthält, setzt sich der Device-Name aus Device-Set-Name+Technology+Package-Variante zusammen.
Anschließend ist der CONNECT-Befehl zu verwenden, damit festgelegt werden kann, welcher Pin (im Schaltplan-Symbol) welchem Pad des Gehäuses entspricht.
Die maximale Anzahl von Package-Varianten pro Device-Set ist 254.
Führt man im Schaltplan-Modus den BOARD-Befehl aus,
so entsteht für jedes Device dasjenige Package, das mit dem
PACKAGE-Befehl festgelegt wurde.
PAD
Siehe auch SMD,
CHANGE,
DISPLAY,
SET,
NAME,
VIA,
Design Rules
Ein Pad ist ein Bauelemente-Anschluss mit Durchkontaktierung.
Der PAD-Befehl plaziert ein Pad in einem Package. Die Eingabe eines Durchmessers vor dem Plazieren ändert die Größe des Pads. Der Durchmesser wird in der aktuellen Maßeinheit angegeben. Er darf maximal 0.51602 Zoll (ca. 13.1 mm) betragen.
Pads erzeugen Bohrsymbole im Layer Drills und die Lötstopmaske in den Layern tStop/bStop.
Die orientation (siehe Beschreibung bei ADD) darf jeder Winkel im Bereich R0...R359.9 sein. Das S- bzw. M-Flag kann hier nicht benutzt werden.
PAD 0.06 Falls die eingestellte Maßeinheit "Inch" ist, hat das Pad einen Durchmesser von 0.06 Zoll. Die eingegebene Größe bleibt für nachfolgende Operationen erhalten.
Square | quadratisch | |
Round | rund | |
Octagon | achteckig | |
Long | länglich | |
Offset | länglich mit Versatz |
Diese Formen gelten nur für die Aussenlagen (Top bzw. Bottom). In den Innenlagen ist die Form immer "rund".
Bei den länglichen Pads ist der kleinere der beiden Durchmesser als Parameter anzugeben. Das Seitenverhältnis wird über den Parameter Shapes/Elongation in den Design Rules des Boards festgelegt (Default ist 100%, also ein Seitenverhältnis von 2:1).
Die Pad-Form kann entweder (wie der Durchmesser) eingegeben werden, während der Pad-Befehl aktiv ist, oder sie kann mit dem CHANGE-Befehl verändert werden, z. B.:
CHANGE SHAPE OCTAGON Die eingegebene Form bleibt für nachfolgende Operationen erhalten.
Da die Darstellung verschiedener Pad-Formen und der Bohrlöcher den Bildaufbau etwas verlangsamt, kann mit dem Befehl
SET DISPLAY_MODE REAL | NODRILL;von realer auf schnelle Darstellung umgeschaltet werden.
Beachten Sie bitte, dass die tatsächlichen Werte für Pad-Form und -Durchmesser durch die Design Rules des Boards bestimmt werden, in dem das Bauteil verwendet wird.
Die Namen der Pads kann man mit dem Befehl
SET PAD_NAMES ON/OFFein- bzw. ausblenden. Die Änderung wird erst nach dem nächsten Bildaufbau sichtbar.
NOSTOP | keine Lötstopmaske generieren | |
NOTHERMALS | keine Thermals generieren | |
FIRST | dies ist das "erste" Pad (und kann mit einer speziellen Form dargestellt werden) |
Standardmäßig generieren Pads automatisch Lötstopmaske und Thermals.
In speziellen Fällen kann es jedoch erwünscht sein, dass einzelne Pads dies nicht tun.
Die objgen NO...-Flags können benutzt werden um diese Eigenschaften zu
unterdrücken.
Falls die Design Rules eines Boards definieren, dass
das "erste Pad" eines Bauteils in einer speziellen Form dargestellt werden soll, so
wird das mit FIRST markierte Pad auf diese Weise dargestellt.
Ein neu gestarteter PAD-Befehl setzt alle Flags auf ihre Standardwerte zurück.
Sobald ein Flag in der Kommandozeile angegeben wird, gilt es für alle nachfolgend
in diesem PAD-Befehl plazierten Pads (ausgenommen FIRST, welches nur für
das unmittelbar dieser Option folgende Pad gilt).
Orientation siehe ADD-Befehl.
Mit CUT und PASTE lassen sich Teile einer Zeichnung/Bibliothek kopieren, auch in eine andere Zeichnung/Bibliothek.
Dabei ist folgendes zu beachten:
Direction
Function
Length
Orientation
Visible
Swaplevel
NC | not connected | |
In | Eingang | |
Out | Ausgang (totem-pole) | |
I/O | Ein-/Ausgang (bidirektional) | |
OC | Open Collector oder Open Drain | |
Hiz | High-Impedance(3-State)-Ausgang | |
Pas | passiv (für Widerstände, Kondensatoren etc.) | |
Pwr | Power-Pin (Vcc, Gnd, Vss ...), Stromversorgungs-Eingang | |
Sup | Stromversorgungs-Ausgang, z.B. Massesymbol. |
Default: I/O
Wenn Pwr-Pins in einem Symbol vorhanden sind und im Schaltplan ein entsprechender Sup-Pin existiert, werden die Netze automatisch eingefügt. Sup-Pins werden nicht in Bauelementen verwendet.
None | keine spezielle Funktion | |
Dot | Invertier-Symbol | |
Clk | Taktsymbol | |
DotClk | Invertiertes Taktsymbol |
Default: None
Point | Pin wird ohne Linie und Beschriftung dargestellt | |
Short | Linie ist 0.1 Zoll lang | |
Middle | Linie ist 0.2 Zoll lang | |
Long | Linie ist 0.3 Zoll lang |
Default: Long
R0 | Pin-Symbol rechts | |
R90 | Pin-Symbol oben | |
R180 | Pin-Symbol links | |
R270 | Pin-Symbol unten |
Default: R0
Both | Pin- und Pad-Name sind im Schaltplan sichtbar | |
Pad | nur der Pad-Name ist im Schaltplan sichtbar | |
Pin | nur der Pin-Name ist im Schaltplan sichtbar | |
Off | weder Pin- noch Pad-Name im Schaltplan sichtbar |
Default: Both
Default: 0
Gibt man im PIN-Befehl einen Namen an, dann muss er in Hochkommas eingeschlossen sein. Pin-Namen kann man im Symbol-Editier-Modus mit dem NAME-Befehl ändern.
PIN 'D0' und alle weiteren nur noch mit je einem Mausklick ab. Der numerische Teil des Namens wird dann automatisch weitergezählt.
Der SHOW-Befehl zeigt den Namen des Pins sowie Direction und Swaplevel an.
Drei Pins sollen z.B. GND heißen. Sie geben den Pins bei der Symbol-Definition die Namen GND@1, GND@2 und GND@3. Im Schaltplan sind nur die Zeichen vor dem "@" sichtbar, und die Pins werden dort auch so behandelt, als hießen Sie GND.
Es ist nicht möglich, in einem Symbol, das in einem Device verwendet wird, nachträglich einen Pin hinzuzufügen oder zu löschen, da dies die im Device definierten Pin-/Pad-Zuordnungen (CONNECT-Befehl) verändern würde.
!RESETwas als
_____ RESETdargestellt würde. Einzelheiten hierzu finden Sie in der Beschreibung des TEXT-Befehls.
In einem Schaltplan kann man mit diesem Befehl Pins vertauschen, die zum selben Device gehören und bei der Symbol-Definition denselben Swaplevel erhalten haben (Swaplevel > 0). Swaplevel siehe PIN-Befehl. Ist eine Platine über die Back-Annotation einem Schaltplan verbunden, dann lassen sich Pads nur dann vertauschen, wenn die zugehörigen Pins vertauscht werden können.
In einer Platine, zu der es keinen Schaltplan gibt, lassen sich mit zwei Pads desselben Package vertauschen. Der Swaplevel wird dabei nicht geprüft.
Die an den vertauschten Pads angeschlossenen Leitungen wandern
mit, so dass es zu Kurzschlüssen kommen kann. Bitte DRC durchführen
und, falls erforderlich, Fehler korrigieren.
POLYGON
Siehe auch CHANGE,
DELETE,
RATSNEST,
RIPUP,
WIRE,
MITER
Der POLYGON-Befehl dient zum Zeichnen von Polygonflächen. Polygone in den Layern Top, Bottom und Route2..15 werden als Signale behandelt. Polygone in den Layern t/b/vRestrict sind Sperrflächen für den Autorouter.
Wird der curve oder @radius Parameter angegeben, so kann ein Kreisbogen als Teil der Polygondefinition gezeichnet werden (siehe die ausführliche Beschreibung beim WIRE-Befehl).
Falls Sie dem Polygon einen Namen geben wollen, der mit einer Ziffer beginnt (zum Beispiel 0V), so müssen Sie diesen Namen in Hochkommas einschließen, um ihn von einem width-Wert zu unterscheiden.
Die Parameter Isolate und Rank sind nur für Polygone in den Signallayern Top...Bottom relevant.
1. Outlines: | "Urzustand", also die Form in der sie vom Benutzer definiert worden sind (Umrisslinien) | |
2. Real mode: | "freigerechneter" Zustand, also die Form wie sie vom Programm berechnet wird. |
Im "Urzustand" werden Polygone mit gepunkteten Wires dargestellt, um sie von anderen Wires unterscheiden zu können. In der Board-Datei (name.brd) ist nur der Urzustand abgespeichert.
Standardmäßig werden alle Polygone am Bildschirm im Urzustand dargestellt, da das Freirechnen ein rechenintensiver und damit zeitaufwendiger Vorgang ist. Es werden dabei nur die vom Benutzer definierten Umrisslinien dargestellt.
Bei der Ausgabe mit dem CAM-Prozessor werden auf jeden Fall alle Polygone freigerechnet.
Das Freirechnen der Polygone wird mit dem RATSNEST-Befehl ausgelöst (mit SET POLYGON_RATSNEST OFF; kann das verhindert werden). Ein Klick auf das Stop-Icon bricht das Freirechnen ab. Alle bis dahin freigerechneten Polygone liegen dann im freigerechneten Zustand vor, alle anderen (auch das gerade in der Berechnung befindliche!) liegen im Urzustand vor.
Ein freigerechnetes Polygon kann durch Anklicken mit dem RIPUP-Befehl wieder in den Urzustand zurückversetzt werden.
Bei CHANGE-Operationen wird ein Polygon neu freigerechnet, wenn es vor dem CHANGE bereits freigerechnet war.
SPLIT: fügt neue Polygonkanten ein.
DELETE: löscht eine Polygon-Ecke (falls nur noch drei Ecken vorhanden sind, wird das ganze Polygon gelöscht).
CHANGE LAYER: ändert den Layer des gesamten Polygons.
CHANGE WIDTH: ändert den Parameter Width des gesamten Polygons.
MOVE: bewegt Polygonkante oder -ecke (wie bei normalen Wire-Zügen).
COPY: kopiert ganzes Polygon.
NAME: Falls das Polygon in einem Signal-Layer liegt, wird der Name des Signals geändert.
Unter gewissen Umständen, insbesondere mit Orphans = Off, kann ein Polygon vollständig verschwinden. In diesem Fall werden auf dem Bildschirm die Linien im Urzustand dargestellt um es dem Benutzer zu ermöglichen, das Polygon zu löschen oder anderweitig zu verändern. Mit dem Drucker oder dem CAM-Prozessor werden diese Linien nicht ausgegeben, um keine Kurzschlüsse zu verursachen. Ein Polygon wird auch dann in seinem Urzustand dargestellt, wenn das Signal andere nicht-Polygon-Objekte enthält, von denen keines mit dem Polygon verbunden ist.
Bei der Beurteilung, ob ein solches Objekt tatsächlich eine solide Verbindung zum schraffierten Polygon hat, wird das Objekt auf einige "Kontrollpunkte" reduziert. Für ein rundes Pad wären das zum Beispiel der nördliche, östliche, westliche und südliche Punkt auf seinem Umfang. Für einen Wire wären es seine beiden Endpunkte. Eine solide Verbindung besteht dann, wenn es im berechneten Polygon mindestens eine Linie (Umriß- oder Schraffurlinie) gibt, deren Mittellinie durch diese Punkte verläuft.
Thermal- und Annulus-Ringe innerhalb eines schraffierten Polygons, die
keinen soliden Kontakt zu den Polygon-Linien haben, werden nicht erzeugt.
PREFIX
Siehe auch CONNECT,
PACKAGE,
VALUE
Dieser Befehl wird im Device-Editier-Modus angewendet. Er legt fest, mit welchem Zeichen oder welcher Zeichenfolge der automatisch vergebene Name beginnen soll, wenn das Element mit dem ADD-Befehl im Schaltplan plaziert wird.
PREFIX U;Wird dieser Befehl ausgeführt, während man das Device 7400 editiert, dann bekommen später die mit ADD im Schaltplan plazierten NAND-Gatter die Namen U1, U2, U3 und so weiter. Diese Namen lassen sich mit dem NAME-Befehl ändern.
Der PRINT-Befehl druckt die gerade editierte Zeichnung auf dem System-Drucker aus.
Farben und Füllmuster werden aus dem Editor-Fenster übernommen, falls nicht die Optionen SOLID oder BLACK angegeben werden. Als Farbpalette wird beim Ausdruck immer diejenige für weißen Hintergrund verwendet.
Wenn Sie Pads und Vias "ausgefüllt" drucken wollen (ohne sichtbare Bohrlöcher), benutzen Sie den Befehl
SET DISPLAY_MODE NODRILL;Bitte beachten Sie, dass Polygone in Platinen beim Ausdrucken mit dem PRINT-Befehl nicht automatisch freigerechnet werden! Es werden lediglich die Umrisse dargestellt. Um die Polygone freigerechnet auszudrucken führen Sie bitte vorher den RATSNEST-Befehl aus.
Es kann ein factor angegeben werden um die Ausgabe zu skalieren.
Mit dem Parameter limit kann die maximale Anzahl von Blättern angegeben werden, die für die Ausgabe verwendet werden soll. Diese Zahl muss mit einem vorangestellten '-' angegeben werden, um sie vom factor unterscheiden zu können. Sollte die Zeichnung nicht auf die vorgegebene Anzahl von Blättern passen, so wird der factor so lange verkleinert, bis sie gerade noch passt. Setzen Sie diesen Parameter auf -0 um beliebig viele Blätter zuzulassen (und damit sicherzustellen, dass der Ausdruck genau mit dem angegebenen Faktor skaliert wird).
Wird der PRINT-Befehl nicht mit einem ';' abgeschlossen, so erscheint ein Druck-Dialog in dem alle Druck-Optionen eingestellt werden können. Bitte beachten Sie, dass Optionen, die über die Kommandozeile eingegeben wurden, nur dann dauerhaft in den Druckeinstellungen gespeichert werden, wenn sie über den Druck-Dialog bestätigt wurden (d.h. wenn der Befehl nicht mit einem ';' abgeschlossen wurde).
Folgende options stehen zur Verfügung:
MIRROR | spiegelt die Ausgabe | |
ROTATE | dreht die Ausgabe um 90° | |
UPSIDEDOWN | dreht die Ausgabe um 180°. Zusammen mit ROTATE, wird die Zeichnung um insgesamt 270° gedreht | |
BLACK | ignoriert die Farbeinstellungen der Layer und zeichnet alles in Schwarz | |
SOLID | ignoriert die Füllmuster der Layer und zeichnet alles voll ausgefüllt | |
CAPTION | druckt eine Bildunterschrift | |
FILE | leitet die Ausgabe in eine Datei um; der Dateiname muss unmittelbar nach dieser Option folgen | |
PRINTER | druckt auf einen bestimmten Drucker; der Druckername muss unmittelbar nach dieser Option folgen | |
PAPER | druckt auf das angegebene Papierformat; das Papierformat muss unmittelbar nach dieser Option folgen | |
SHEETS | druckt den angegebenen Bereich von Schaltplanseiten; der Bereich (von-bis) muss unmittelbar nach dieser Option folgen | |
WINDOW | druckt den momentan sichtbaren Ausschnitt der Zeichnung | |
PORTRAIT | druckt in Hochformat | |
LANDSCAPE | druckt in Querformat |
Wird einer der options MIRROR...CAPTION ein '-' vorangestellt, so wird diese Option ausgeschaltet, falls sie zur Zeit eingeschaltet ist (von einem vorhergehenden PRINT). Ein '-' allein schaltet alle options aus.
Hat der Dateiname die Extension ".pdf" (wobei die Groß-/Kleinschreibung keine Rolle spielt), so wird eine PDF-Datei erzeugt. Eine PDF-Datei kann auch durch Auswahl von "In Datei drucken (PDF)" aus der "Drucker" Combo-Box im Druck-Dialog erzeugt werden. Texte in einer PDF-Datei können in einem PDF-Betrachter durchsucht werden, solange sie nicht den Vektor-Font verwenden.
Hat der Dateiname die Extension ".ps" (wobei die Groß-/Kleinschreibung keine Rolle spielt), so wird eine Postscript-Datei erzeugt.
Besteht der Dateiname nur aus einem "*" oder "*.ext" (ein Stern gefolgt von einer Extension, wie etwa "*.pdf"), so wird ein Datei-Dialog geöffnet über den der Benutzer den tatsächlichen Dateinamen auswählen oder eingeben kann.
Besteht der Dateiname nur aus einer Extension, wie etwa ".pdf", so wird der Name der Ausgabedatei aus dem Namen der Zeichnungsdatei gebildet, indem dessen Extension durch den angegebenen String ersetzt wird.
Der Dateiname kann einen oder mehrere der folgenden Platzhalter enthalten, die durch den entsprechenden Text ersetzt werden:
%E | die Extension der geladenen Datei (ohne den '.') | |
%N | der Name der geladenen Datei (ohne Pfad und Extension) | |
%P | Verzeichnis-Pfad der geladenen Datei (ohne Dateinamen) | |
%% | das Zeichen '%' |
Zum Beispiel würde der Dateiname
%N.cmp.pdf
den Namen boardname.cmp.pdf erzeugen.
Wurde sowohl die FILE als auch die PRINTER Option angegeben, so wird nur die zuletzt angegebene berücksichtigt.
Breite x Höhe Einheit(ohne Leerzeichen) angegeben werden, wie in
PRINT PAPER 200x300mm PRINT PAPER 8.0x11.5inchBreite und Höhe können Dezimalzahlen sein, und die Einheit ist entweder mm oder inch (letztere kann abgekürzt werden als in). Papiernamen müssen vollständig angegeben werden, wobei die Groß-/Kleinschreibung keine Rolle spielt. Wird sowohl die PRINTER- als auch die PAPER-Option benutzt, muss die PRINTER-Option zuerst angegeben werden. Benutzerdefinierte Papiergrößen funktionieren nicht unbedingt mit allen Druckern. Sie sind hauptsächlich für die Ausgabe in Postscript- bzw. PDF-Dateien gedacht.
öffnet den Print Dialog für die Eingabe der Druckeinstellungen | ||
PRINT; | druckt die Zeichnung ohne weiteren Dialog, mit default Einstellungen | |
PRINT - MIRROR BLACK SOLID; | druckt die Zeichnung gespiegelt, alles in Schwarz und voll ausgefüllt | |
PRINT 2.5 -1; | druckt die Zeichnung um den Faktor 2.5 vergrößert, wobei aber sichergestellt wird, dass nicht mehr als ein Blatt verwendet wird | |
PRINT FILE .pdf; | druckt die Zeichnung in eine PDF-Datei mit dem gleichen Namen wie die Zeichnungsdatei | |
PRINT SHEETS 2-15 FILE .pdf; | druckt die Seiten 2 bis 15 in eine PDF-Datei mit dem gleichen Namen wie die Zeichnungsdatei |
Sie können das Programm von jeder Stelle aus mit Alt+X verlassen.
RATSNEST
Siehe auch SIGNAL,
MOVE,
POLYGON,
RIPUP
RATSNEST signal_name ..
RATSNEST ! signal_name ..
Der RATSNEST-Befehl berechnet die Luftlinien neu, damit man z. B. nach einer Änderung der Bauelemente-Plazierung wieder die kürzesten Verbindungen erhält. Auch nach dem Einlesen einer Netzliste (mit dem SCRIPT-Befehl) ist es sinnvoll, den RATSNEST-Befehl aufzurufen, da dabei im allgemeinen nicht die kürzesten Luftlinien entstehen.
Der RATSNEST-Befehl berechnet auch alle Polygone neu, die zu einem Signal gehören. Dies ist notwendig, damit für bereits durch Polygonflächen verbundene Pads keine Luftlinien mehr erzeugt werden. Alle zugehörigen Polygonflächen sind dann in realer Darstellung zu sehen. Auf Umriss-Darstellung kann mit dem RIPUP-Befehl gewechselt werden. Die automatische Berechnung der Polygone kann mit
SET POLYGON_RATSNEST OFF;ausgeschaltet werden.
Beachten Sie bitte, dass RATSNEST die Board-Zeichnung nicht als verändert kennzeichnet, da die berechneten Polygon-Daten (falls vorhanden) nicht in der Datei abgespeichert werden, und die neuberechneten Luftlinien keine wirkliche Veränderung der Zeichnung darstellen.
Solche Luftlinen der Länge Null können mit dem ROUTE-Befehl wie andere Luftlinien angeklickt werden. Top- und Bottom-Seite können an diesen Stellen auch durch Plazieren eines Vias verbunden werden.
Ratsnest: Nichts zu tun!aus. Andernfalls erscheint die Meldung
Ratsnest: Luftlinien: xxwobei xx die Zahl der ungerouteten Luftlinien repräsentiert.
* | steht für eine beliebige Anzahl beliebiger Zeichen | |
? | steht für genau ein Zeichen | |
[...] | steht für irgend eines der Zeichen zwischen den Klammern |
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern eingeschlossen werden. Zum Beispiel findet abc[*]ghi die Zeichenfolge abc*ghi, aber nicht abcdefghi.
Ein Bereich von Zeichen kann als [a-z] angegeben werden, was für eines der Zeichen aus dem Bereich 'a'...'z' steht.
Um Luftlinien auszublenden kann der RATSNEST-Befehl mit einem Ausrufezeichen ('!'), gefolgt von einer Liste von Signalnamen, aufgerufen werden:
RATSNEST ! GND VCCHiermit würden die Luftlinien der Signale GND und VCC ausgeblendet.
RATSNEST GND VCCDamit wird die Anzeige der Luftlinien der Signale GND und VCC aktiviert und diese auch gleich neu berechnet. Auf diese Weise lassen sich auch die Luftlinien und Polygone nur für bestimmte Signale neu berechnen.
Die Signalnamen können Platzhalter enthalten, und die beiden Varianten können kombiniert werden, wie in
RATSNEST D* ! ?GND VCCwomit die Luftlinien aller Signale, deren Namen mit 'D' beginnen, neu berechnet und angezeigt werden, und die Luftlinien der verschiedenen GND-Signale (wie AGND, DGND etc.) und des VCC-Signals ausgeblendet werden. Beachten Sie, dass der Befehl von links nach rechts abgearbeitet wird, so dass für den Fall, dass es ein DGND-Signal gibt, dieses im Beispiel zuerst für die Anzeige neu berechnet wird, seine Luftlinien dann aber ausgeblendet werden.
Ausgeblendete Luftlinien werden mit SHOW nicht angezeigt und können auch nicht selektiert werden.
Um sicherzustellen, dass alle Luftlinien eingeblendet sind, geben Sie ein
RATSNEST *Beachten Sie, das der SIGNAL-Befehl automatisch die Luftlinien eines Signals einblendet, wenn eine neue Luftlinie für dieses Signal erzeugt wird. Der RIPUP-Befehl hingegen ändert nichts an der Sichtbarkeit von Luftlinien, wenn ein Wire eines Signals in eine Luftlinie verwandelt wird.
Mit diesem Befehl zeichnet man Rechtecke in den aktiven Layer. Die beiden Punkte legen gegenüberliegende Ecken des Rechtecks fest. Die mittlere Maustaste wechselt den aktiven Layer.
Die orientation (siehe Beschreibung bei ADD) darf jeder Winkel im Bereich R0...R359.9 sein. Das S- bzw. M-Flag kann hier nicht benutzt werden. Beachten Sie bitte, dass die Koordinaten immer bezogen auf einen Winkel R0 angegeben werden. Die Möglichkeit der Eingabe eines Winkels beim RECT-Befehl ist hauptsächlich für die Benutzung in Scripts vorgesehen, wobei die Daten des Rechtecks etwa durch ein User Language Programm aus dem UL_RECTANGLE-Objekt ermittelt wurden. Bei interaktiver Eingabe eines Winkels ungleich 0 kann es sein, dass die Ecken des Rechtecks nicht an der aktuellen Position des Mauszeigers erscheinen. Benutzen Sie den ROTATE-Befehl um ein Rechteck interaktiv zu drehen.
Die mit UNDO rückgängig gemachten Befehle lassen sich mit REDO erneut ausführen. Damit kann man ganze Abläufe rekonstruieren. Die Befehle EDIT, OPEN, AUTO und REMOVE löschen die Vorgeschichte.
UNDO/REDO ist vollkommen in den Mechanismus der Forward&Back-Annotation
integriert.
REMOVE
Siehe auch OPEN,
RENAME
REMOVE name.Sxx
Symbole/Packages lassen sich nur löschen, wenn sie in keinem Device verwendet werden.
Ist ein Symbol, Device oder Package zum Editieren geladen, wirkt der Befehl auf den entsprechenden Typ. Ansonsten werden die Namen als Device-Namen interpretiert, falls das Schaltplan-Modul vorhanden ist, und als Package-Namen, falls kein Schaltplan-Modul vorhanden ist.
REMOVE .S3löscht Seite Nr. 3 aus dem gegenwärtig geladenen Schaltplan.
In der Syntax-Beschreibung entspricht xx der Nummer der zu löschenden Seite. Falls xx gleich der Nummer der gerade editierten Seite ist, wird Seite Nummer 1 geladen. Alle Seiten mit Nummern, die größer sind als xx , erhalten eine um 1 verminderte Nummer. Das Löschen einer Seite löscht auch den Undo-Puffer und kann daher nicht rückgängig gemacht werden! Da alle Seiten eines Schaltplans in einer Datei gespeichert sind (name.sch), kann beim versehentlichen Löschen einer Seite aber immer noch auf die alte Version zurückgegriffen werden - falls die gerade editierte Version nach dem Löschen der Seite nicht zurückgeschrieben wurde!
REMOVE löscht den Undo-Puffer.
RENAME
Siehe auch OPEN
Mit RENAME kann der Name eines Symbols, Device oder Package geändert werden. Die Bibliothek muss vorher mit OPEN geöffnet worden sein.
Der Name darf mit der Namenserweiterung angegeben werden (zum Beispiel RENAME name1.pac name2[.pac] - die Erweiterung im zweiten Parameter ist optional). Wird der erste Parameter ohne Erweiterung angegeben, müssen Sie sich im entsprechenden Editier-Modus (z. B. im Package-Modus um Packages umzubenennen) befinden.
RENAME löscht den Undo-Puffer.
REPLACE
Siehe auch SET,
UPDATE
REPLACE device_name ..
REPLACE part_name device_name ..
REPLACE package_name ..
REPLACE element_name package_name ..
Der REPLACE-Befehl kann dazu benutzt werden, ein Bauteil gegen ein anderes (auch aus einer anderen Bibliothek) auszutauschen. Altes und neues Bauteil müssen kompatibel sein, das heisst ihre benutzten Gatter und angeschlossenen Pins bzw. Pads müssen entweder über ihre Namen oder ihre Koordinaten zusammenpassen.
Ohne Parameter öffnet der REPLACE-Befehl einen Dialog, über den ein Bauteil aus allen momentan in Verwendung befindlichen Bibliotheken ausgewählt werden kann. Nach dieser Auswahl führen weitere Mausklicks auf Bauteile dazu, dass diese (soweit möglich) gegen das ausgewählte Bauteil getauscht werden.
Wird ein device_name angegeben, so wird dieses Bibliothekselement für die Austausch-Operation verwendet.
Wird sowohl ein part_name als auch ein device_name angegeben, so wird das Bauteil part_name gegen das Bibliothekselement device_name ausgetauscht (was nützlich ist, wenn mit Skripten gearbeitet wird).
Falls nur ein Board (ohne Schaltplan) bearbeitet wird, oder falls Bauteile im Board ersetzt werden sollen die kein entsprechendes Bauteil im Schaltplan haben, so kennt REPLACE-Befehl zwei verschiedene Betriebsarten, die mit dem SET-Befehl eingestellt werden.
SET REPLACE_SAME NAMES;aktiviert; sie ist beim Programmstart eingestellt. In dieser Betriebsart kann man einem Element im Schaltplan ein anderes Package zuweisen, bei dem dieselben Pad- und Smd-Namen vorhanden sind.
Das neue Package kann aus einer anderen Bibliothek stammen, und es darf zusätzliche Pads und Smds enthalten. Die Lage der Anschlüsse ist beliebig.
Anschlüsse des alten Package, die mit Signalen verbunden sind, müssen entsprechend auch im neuen Package vorhanden sein. Das neue Package darf auch weniger Anschlüsse haben, solange diese Bedingung erfüllt ist.
SET REPLACE_SAME COORDS;aktiviert. Sie erlaubt es, einem Element in einem Schaltplan ein anderes Package zuweisen, bei dem auf denselben Koordinaten (relativ zum Ursprung des Package) Pads oder Smds liegen müssen. Die Namen dürfen unterschiedlich sein.
Das neue Package kann aus einer anderen Bibliothek stammen, und es darf zusätzliche Pads und Smds enthalten. Anschlüsse des alten Package, die mit Signalen verbunden sind, müssen entsprechend auch im neuen Package vorhanden sein. Das neue Package darf auch weniger Anschlüsse haben, solange diese Bedingung erfüllt ist.
REPLACE funktioniert nur mit eingeblendetem tOrigins- bzw. bOrigins-Layer.
Existiert bereits ein Package mit demselben Namen (aus derselben Bibliothek) in der Zeichnung, und wurde die Bibliothek seit dem Plazieren des Bauteils modifiziert, wird automatisch ein Library-Update gestartet. Dabei werden Sie gefragt, ob die Objekte in der Zeichnung durch die neueren aus der Bibliothek ersetzt werden sollen.
Achtung: Eine REPLACE-Operation aktualisiert automatisch je nach Bedarf alle
betroffenen Bibliotheksobjekte. Dies bedeutet, dass auch andere Bauteile (auf
anderen Schaltplanseiten oder an anderen Stellen des Boards) verändert werden
können.
Starten Sie den Design Rule Check (DRC) und den
Electrical Rule Check (ERC) nach jeder REPLACE-Operation!
RIPUP
Siehe auch DELETE,
GROUP,
POLYGON,
RATSNEST
Polygondarstellung auf "Umrisse".
RIPUP [ @ ] [ ! ] ..
RIPUP [ @ ] [ ! ] signal_name..
Der Befehl RIPUP wird dazu verwendet, bereits verlegte Signale wieder in Luftlinien zu verwandeln. Der Befehl kann verwendet werden für:
RIPUP signal_name..Wirkt auf das gesamte Signal "signal_name" (mehrere Signale sind möglich, z.B. Ripup D0 D1 D2;)
RIPUP ..Wirkt auf das durch den Mausklick selektierte Segment (bis zum nächsten Pad/Smd). Bei
RIPUP;werden nur solche Signale berücksichtigt, die an Elementen angeschlossen sind (z.B. die Eckwinkel zur Platinenbegrenzung bleiben erhalten). Das gleiche gilt, wenn der RIPUP-Befehl auf eine Gruppe angewendet wird.
Achtung: in allen Fällen wirkt der RIPUP-Befehl nur auf Objekte in Layern, die momentan eingeblendet sind!
* | steht für eine beliebige Anzahl beliebiger Zeichen | |
? | steht für genau ein Zeichen | |
[...] | steht für irgend eines der Zeichen zwischen den Klammern |
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern eingeschlossen werden. Zum Beispiel findet abc[*]ghi die Zeichenfolge abc*ghi, aber nicht abcdefghi.
Ein Bereich von Zeichen kann als [a-z] angegeben werden, was für eines der Zeichen aus dem Bereich 'a'...'z' steht.
Mit dem ROTATE-Befehl kann man die Orientierung von Objekten ändern.
Wird orientation (siehe Beschreibung bei ADD) angegeben, so wird stattdessen die angegebene Orientation zu der Orientation des selektierten Objektes hinzugefügt.
Wird der angegebenen orientation das Zeichen '=' vorangestellt, so wird der Wert nicht hinzugefügt, sondern absolut eingestellt.
Bauteile, Pads, Smds und Pins lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet.
Zum Beispiel würde
ROTATE =MR90 IC1
die Orientierung des Elements IC1 auf MR90 einstellen, unabhängig davon, welchen Wert diese vorher hatte.
Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination aus Bauteilname und Attributname angegeben wird, wie etwa R5>VALUE.
Falls name mit einem Wert für die Orientierung verwechselt werden könnte muss der Name in Hochkommas eingeschlossen werden, wie in
ROTATE R45 'R1'
Mit Click&Drag können Sie ein Objekt um einen beliebigen Winkel drehen. Klicken Sie dazu auf das Objekt und bewegen Sie die Maus (mit gedrückter Maustaste) vom Objekt weg. Nachdem Sie die Maus eine kurze Strecke bewegt haben beginnt das Objekt sich zu drehen. Bewegen Sie die Maus bis der gewünschte Winkel erreicht ist und lassen Sie dann die Maustaste los. Sollten Sie es sich zwischenzeitlich anders überlegt haben und das Objekt lieber doch nicht rotieren wollen, so können Sie (bei immer noch gedrückter Maustaste) die Esc-Taste drücken um den Vorgang abzubrechen. Die gleiche Operation kann auch auf eine Gruppe angewendet werden indem die rechte Maustaste verwendet wird. Die Gruppe wird um den Punkt rotiert, an dem die Maustaste gedrückt wurde.
Bauteile können nicht rotiert werden, wenn sie gelockt sind, oder wenn eines ihrer angeschlossenen Pads aus der erlaubten Fläche hinausstehen würde (falls sie eine eingeschränkte Version von EAGLE verwenden).
Elemente lassen sich nur drehen, wenn der tOrigins- bzw. der bOrigins-Layer sichtbar ist.
Wenn Sie einen Text "auf dem Kopf stehend" darstellen wollen, so können
Sie das "Spin"-Flag für diesen Text setzen.
ROUTE
Siehe auch AUTO,
UNDO,
WIRE,
MITER,
SIGNAL,
SET,
RATSNEST
ROUTE name ..
Der ROUTE-Befehl dient dazu, die unverdrahteten Signale (dargestellt als Luftlinien im Unrouted-Layer) in verdrahtete (also Wires in den Signal-Layern) umzuwandeln.
Ist der ROUTE-Befehl aktiviert, kann die Breite (width) des entstehenden Wires unmittelbar von der Tastatur aus eingegeben werden.
Nachdem man den ROUTE-Befehl aktiviert hat, setzt man den ersten Punkt an einem Ende der Luftlinie an und bewegt den Mauszeiger in die Richtung, in die man die Leitung legen will. EAGLE ersetzt dann die Luftlinie durch einen Wire oder zwei Wire-Stücke (je nach eingestelltem Knickwinkel) im gerade aktiven Signal-Layer.
Die linke Maustaste erneut betätigt, setzt das Leitungsstück ab. Wird beim Absetzen die Shift-Taste gedrückt, so wird (falls möglich und die Luftlinie nicht bereits ohnehin komplett geroutet ist) ein Via an der Absetzstelle gesetzt (entweder mit passender Länge oder, falls sich eine solche nicht ermitteln lässt, durchgehend von Layer 1 bis 16).
Mit der mittleren Maustaste wechselt man die Ebene. Durchkontaktierungen (Vias) werden automatisch gesetzt. Bitte beachten Sie, dass von den Signal-Layern (1 bis 16) nur diejenigen zur Verfügung stehen, die im Layer-Setup in den Design Rules eingetragen sind.
Es wird nur das minimal nötige Via (gemäß dem Layer-Setup in den Design Rules) gesetzt. Dabei kann es vorkommen, dass ein bereits vorhandenes Via des selben Signals entsprechend verlängert wird, oder dass vorhandene Vias zusammengefasst werden um ein längeres Via zu bilden, falls dies nötig ist um den gewünschten Layer-Übergang zu ermöglichen. Wird ein Via am Anfangs- oder Endpunkt gesetzt und es befindet sich an dieser Stelle ein SMD-Pad, so wird ein Micro-Via erzeugt falls der aktuelle Route-Layer eine Ebene vom Layer des SMDs entfernt ist (dies trifft nur dann zu wenn in den Design Rules Micro-Vias erlaubt sind).
Die rechte Maustaste ändert den Knickwinkel (siehe SET Wire_Bend).
Ist eine Luftlinie komplett verdrahtet, ertönt ein Piepston.
Wird der curve oder @radius Parameter angegeben, so kann ein Kreisbogen als Teil des Leiterbahnzugs gezeichnet werden (siehe die ausführliche Beschreibung beim WIRE-Befehl).
Wird der Startpunkt mit gedrückter Ctrl-Taste angeklickt und befindet sich dort keine Luftlinie, so wird automatisch eine neue Luftlinie erzeugt. Der Startpunkt dieser Luftlinie ist derjenige Punkt auf dem selektierten Wire oder Via, der dem Mauszeiger am nächsten liegt (möglicherweise auf den nächstgelegenen Rasterpunkt geschnappt). Das ferne Ende der Luftlinie zeigt dynamisch auf ein Zielsegment, welches nicht das ausgewählte Segment ist. Sollte das selektierte Signal bereits vollständig geroutet sein, so zeigt das ferne Ende zum Startpunkt. Ist der selektierte Wire ein Kreisbogen, so beginnt die Luftlinie am nächstgelegenen Endpunkt des Wires.
Wird ein name angegeben, so wird die Luftlinie dieses Signals selektiert, die dem Mauszeiger am nächsten liegt. Falls name als with, curve oder @radius Parameter interpretiert werden könnte, so muss er in Hochkommas eingeschlossen werden.
Wenn eine Luftlinie geroutet wird, die an einem bereits verlegten Wire beginnt, so übernimmt der neu verlegte Wire die Breite des bereits existierenden Wires, wenn beim Selektieren der Luftlinie die Shift-Taste gedrückt wird.
SET SNAP_LENGTH number;kann der Grenzwert für die Fangfunktion eingestellt werden, wobei number in der aktuellen Grid-Einheit anzugeben ist. Default ist 20 Mil.
Knickwinkel 8 verlegt nur das kürzere Ende der selektierten Luftlinie, während 9 beide Seiten verlegt. Sobald die automatische Wegesuche beendet ist (was einige Zeit dauern kann, haben Sie also bitte Geduld), wird die Luftlinie durch die konkreten Wires und Vias ersetzt. Konnte keine Verbindung gefunden werden (etwa aufgrund von Beschränkungen durch die Design-Regeln), so wechselt der Cursor in ein "Verbotszeichen". Mit Knickwinkel 9 kann es vorkommen, dass nur eine Seite der Luftlinie verlegt werden kann und die andere nicht.
Bei jeder Mausbewegung wird das bisherige Ergebnis verworfen und eine neue Berechnung gestartet. Sobald das Ergebnis akzeptabel ist, klicken Sie mit der linken Maustaste um es abzulegen.
Der Follow-me-Router arbeitet so, dass er den Rasterpunkt an der aktuellen Mausposition als Startpunkt nimmt und den Autorouter benutzt um eine Verbindung von diesem Punkt zu einem Punkt auf dem Signal-Segment zu finden, an dem die Luftlinie endet (was nicht unbedingt der genaue Endpunkt der Luftlinie sein muss). Der Startpunkt berücksichtigt auch den momentan gewählten Layer, wundern Sie sich also nicht, wenn der Router an dieser Stelle ein Via setzt. Durch Ändern des aktuellen Layers kann das Routing-Ergebnis beeinflusst werden.
Als Routing-Raster wird das zum Zeitpunkt des Selektierens der Luftlinie eingestellte Raster verwendet.
Die Routing-Parameter (wie etwa Kostenfaktoren, Vorzugsrichtungen etc.) werden im Dialog des AUTO-Befehls definiert.
Folgende Besonderheiten gelten:
Der RUN-Befehl startet das User-Language-Programm mit dem Namen file_name.
Das optionale Argument-Liste ist für das ULP über die
Builtin-Variablen argc und argv verfügbar.
Der SCRIPT-Befehl stellt eine Möglichkeit dar, Befehlssequenzen auszuführen, die in einer Datei abgelegt sind. Gibt man den Befehl über die Tastatur ein, so wird, falls keine Extension angegeben wurde, ".scr" als Default verwendet.
SCRIPT nofill | ruft nofill.scr auf | |
SCRIPT myscr. | ruft myscr (ohne Suffix!) auf | |
SCRIPT myscr.old | ruft myscr.old auf |
Bitte beachten Sie die Möglichkeiten des EXPORT-Befehls im Zusammenhang mit Script-Dateien!
Wählt man den Befehl mit Hilfe der Maus, dann zeigt ein Popup-Menü alle Dateien mit der Erweiterung .scr an. Man kann dann die gewünschte Datei auswählen.
Der SCRIPT-Befehl bietet die Möglichkeit, das Programm an individuelle Bedürfnisse anzupassen. Unter anderem kann man damit:
Wird der SET-Befehl ohne Parameter aufgerufen, so erscheint ein Dialog in dem alle Parameter eingestellt werden können.
Fangfunktion | SET SNAP_LENGTH number; | |
Fangradius: Damit lässt sich der Grenzwert für die Fangfunktion des ROUTE-Befehls in der aktuellen Einheit einstellen. | ||
Default: 20 Mil | ||
Verlegt man mit dem ROUTE-Befehl Leitungen zu Pads, die nicht im Raster liegen, dann sorgt die Fangfunktion dafür, dass man innerhalb der Snap_length zu diesem Pad routen kann. | ||
SET CATCH_FACTOR value; | ||
Fangfaktor: Legt fest, bis zu welchem Abstand vom Mauszeiger Objekte beim Anklicken mit der Maus berücksichtigt werden. Der Wert wird relativ zur Höhe (bzw. Breite, falls diese kleiner ist) des gegenwärtigen Bildausschnitts angegeben. Er gilt bei einer Zoomstufe die mindestens einen Bereich von 100mm darstellt und steigt beim Hineinzoomen logarithmisch an. Der Wert 0 setzt diese Einschränkung ausser Kraft. Default: 0.05 (5%). | ||
SET SELECT_FACTOR value; | ||
Selektionsfaktor: Damit stellt man ein, bis zu welchem Abstand vom Mauszeiger benachbarte Objekte zur Auswahl vorgeschlagen werden. Der Wert wird relativ zur Höhe (bzw. Breite, falls diese kleiner ist) des gegenwärtigen Bildausschnitts angegeben. Default: 0.02 (2%). | ||
Inhalt von Menüs | SET USED_LAYERS name | number; | |
Legt die Layer fest, die in den entsprechenden EAGLE-Menüs angezeigt werden. Siehe Beispieldatei mylayers.scr. | ||
Die Layer Pads, Vias, Unrouted, Dimension, Drills und Holes sowie die Schaltplan-Layer bleiben auf jeden Fall im Menü. Auch alle benutzten Signal-Layer bleiben aktiv. SET Used_Layers All aktiviert alle Layer. | ||
SET WIDTH_MENU value..; | ||
SET DIAMETER_MENU value..; | ||
SET DRILL_MENU value..; | ||
SET SMD_MENU value..; | ||
SET SIZE_MENU value..; | ||
SET ISOLATE_MENU value..; | ||
SET SPACING_MENU value..; | ||
SET MITER_MENU value..; | ||
Für die Parameter width etc. kann der Inhalt der entsprechenden Popup-Menüs mit obigen Befehlen konfiguriert werden. Je Menü sind max. 16 Werte möglich (beim Smd-Menü max. 16 Wertepaare). Wird kein Wert angegeben (also z.B. SET WIDTH_MENU;), so werden die programminternen Standardwerte gesetzt. | ||
Beispiel: Grid Inch; Set Width_Menu 0.1 0.2 0.3; | ||
Knickwinkel für Wires | SET WIRE_BEND bend_nr; | |
bend_nr kann einer der folgenden Werte sein: | ||
0: Startpunkt - waagrecht - senkrecht - Endpunkt | ||
1: Startpunkt - waagrecht - 45° - Endpunkt | ||
2: Startpunkt - Endpunkt (direkte Verbindung) | ||
3: Startpunkt - 45° - waagrecht - Endpunkt | ||
4: Startpunkt - senkrecht - waagrecht - Endpunkt | ||
5: Startpunkt - Kreisbogen - waagrecht - Endpunkt | ||
6: Startpunkt - waagrecht - Kreisbogen - Endpunkt | ||
7: "Freihand" (Kreisbogen passend zum Wire am Startpunkt, ansonsten gerade) | ||
8: Kurzes Ende der Luftlinie im Follow-me-Router verlegen | ||
9: Beide Enden der Luftlinie im Follow-me-Router verlegen | ||
Beachten Sie bitte, dass 0, 1, 3 und 4 zusätzliche Wires zur Abschrägung enthalten können (siehe MITER). | ||
SET WIRE_BEND @ bend_nr ...; | ||
Legt fest welche Knickwinkel beim Weiterschalten mit der rechten Maustaste tatsächlich durchlaufen werden sollen. | ||
SET WIRE_BEND @; | ||
Schaltet zurück auf alle Knickwinkel. | ||
Piepston ein/aus | SET BEEP OFF | ON; |
Farbe für Grid-Linien | SET COLOR_GRID color; | |
Farbe für Layer | SET COLOR_LAYER layer color; | |
Füllmuster für Layer | SET FILL_LAYER layer fill; | |
Raster-Parameter | SET MIN_GRID_SIZE pixels; | |
Das Grid wird nur dann gezeichnet, wenn der Rasterabstand größer ist als die eingestellte Zahl von Pixeln. | ||
Min. darg. Textgröße | SET MIN_TEXT_SIZE size; | |
Texte, die weniger als size Bildpunkte hoch sind, werden auf dem Bildschirm als Rechtecke dargestellt. Einstellung 0 bedeutet: alle Texte werden lesbar dargestellt. | ||
Netz-Linien-Darstellung | SET NET_WIRE_WIDTH width; | |
Pad-Darstellung | SET DISPLAY_MODE REAL | NODRILL; | |
REAL: Pads werden dargestellt, wie sie geplottet werden. NODRILL: Pads werden ohne Bohrung dargestellt. | ||
SET PAD_NAMES OFF | ON; | ||
Pad-Namen werden ein-/ausgeblendet. | ||
Bus-Linien-Darstellung | SET BUS_WIRE_WIDTH width; | |
DRC-Parameter | SET DRC_FILL fill_name; | |
Polygon-Berechnung | SET POLYGON_RATSNEST OFF | ON; | |
Siehe POLYGON-Befehl. | ||
Vector Font | SET VECTOR_FONT OFF | ON; | |
Siehe TEXT-Befehl. | ||
Querverweis-Labels | SET XREF_LABEL_FORMAT string; | |
Siehe LABEL-Befehl. | ||
Bauteil-Querverweise | SET XREF_PART_FORMAT string; | |
Siehe TEXT-Befehl. |
Package-Check | SET CHECK_CONNECTS OFF | ON; | |
Der ADD-Befehl prüft, ob bei einem Device jedem Pad ein Pin (mit CONNECT) zugewiesen ist. Diese Prüfung lässt sich abschalten. Allerdings kann keine Platine aus einem Schaltplan erzeugt werden, falls ein Device ohne Gehäuse gefunden wird. | ||
REPLACE-Modus | SET REPLACE_SAME NAMES | COORDS; | |
UNDO-Puffer ein/aus | SET UNDO_LOG OFF | ON; | |
Wire-Optim. ein/aus | SET OPTIMIZING OFF | ON; | |
Wires, die nach MOVE, ROUTE oder SPLIT in einer Linie liegen, werden zu einem Wire zusammengefasst, falls On eingestellt ist. Siehe auch OPTIMIZE. |
Die Farbpaletten können entweder über den Dialog unter "Optionen/Einstellungen/Farben" verändert werden, oder mittels des Befehls
SET PALETTE index argbwobei index eine Zahl im Bereich 0..63 und argb ein hexadezimaler Wert ist, der die Alpha-, Rot-, Grün- und Blau-Komponenten der Farbe definiert, etwa 0xFFFFFF00 (was ein helles Gelb ergeben würde). Die Alpha-Komponente gibt an wie "deckend" die Farbe ist. Ein Wert von 0x00 bedeutet, dass die Farbe vollkommen transparent ist (d.h. unsichtbar), während 0xFF für eine vollkommen deckende Farbe steht. Die Alpha-Komponente der Hintergrundfarbe ist immer 0xFF. Beachten Sie bitte, dass der ARGB-Wert mit "0x" beginnen muss, ansonsten würde er als dezimale Zahl interpretiert werden. Mit dem Befehl
SET PALETTE BLACK|WHITE|COLOREDkönnen Sie auf die Palette für schwarzen, weißen oder farbigen Hintergrund umschalten. Beachten Sie bitte, dass nach diesem Befehl kein automatisches Neuzeichnen des Zeichenfensters stattfindet; Sie sollten daher anschließend den Befehl WINDOW; ausführen.
Standardmäßig werden nur die Paletten-Einträge 0..15 benutzt und diese enthalten die unten aufgeführten Farben.
Die Paletten-Einträge sind unterteilt in "normale" und "hervorgehobene" Farben. Es gibt immer 8 "normale" Farben, gefolgt von den 8 zugehörigen "hervorgehobenen" Farben. Die Farben 0..7 sind somit "normale" Farben, 8..15 sind ihre "hervorgehobenen" Werte, 16..23 sind weitere 8 "normale" Farben mit 24..31 als deren "hervorgehobene" Werte und so weiter. Die "hervorgehobenen" Farben werden benutzt um Objekte hervorzuheben, wie zum Beispiel im SHOW-Befehl.
Color, geordnet nach Farbnummern, die anstelle von color verwendet werden können. Damit legt man die Farbe fest:
0 | Black | |
1 | Blue | |
2 | Green | |
3 | Cyan | |
4 | Red | |
5 | Magenta | |
6 | Brown | |
7 | LGray | |
8 | DGray | |
9 | LBlue | |
10 | LGreen | |
11 | LCyan | |
12 | LRed | |
13 | LMagenta | |
14 | Yellow | |
15 | White |
Fill legt die Art fest, wie Wires und Rectangles in einem bestimmten Layer gefüllt werden sollen. Auch dieser Parameter kann durch die am Anfang der Zeile stehende Zahl ersetzt werden:
0 | Empty | |
1 | Solid | |
2 | Line | |
3 | LtSlash | |
4 | Slash | |
5 | BkSlash | |
6 | LtBkSlash | |
7 | Hatch | |
8 | XHatch | |
9 | Interleave | |
10 | WideDot | |
11 | CloseDot | |
12 | Stipple1 | |
13 | Stipple2 | |
14 | Stipple3 | |
15 | Stipple4 |
Beispiel
SET Option.DrawUnprocessedPolygonEdgesContinuous 1;Folgende eaglerc-Parameter stehen zur Verfügung:
123 | stellt Layer 123 dar | |
123t | stellt Layer 123 dar, wenn die Ausgabe "von oben gesehen" erfolgt (nicht gespiegelt) | |
123b | stellt Layer 123 dar, wenn die Ausgabe "von unten gesehen" erfolgt (gespiegelt) | |
123-140 | stellt die Layer 123 bis 140 in der angegeben Reihenfolge dar | |
140-123 | stellt die Layer 140 bis 123 in der angegeben Reihenfolge dar | |
* | fügt die Standard-Sequenz der internen Layer ein | |
123b * 123t | sorgt dafür, dass Layer 123 immer als erster dargestellt wird |
Der SHOW-Befehl dient zum Hervorheben von Objekten. Einzelheiten werden in der Statuszeile aufgelistet. Mit SHOW kann man auch ganze Signale und Netze hervorheben (auf dem Bildschirm heller dargestellt). Wird ein Bus ausgewählt, so werden auch alle zu diesem Bus gehörenden Netze hervorgehoben.
Werden mehrere Namen in einer Zeile eingegeben, so werden alle entsprechenden Objekte gleichzeitig hell dargestellt.
* | steht für eine beliebige Anzahl beliebiger Zeichen | |
? | steht für genau ein Zeichen | |
[...] | steht für irgend eines der Zeichen zwischen den Klammern |
Soll eines dieser Zeichen genau so gesucht werden, wie es ist, so muss es in eckige Klammern eingeschlossen werden. Zum Beispiel findet abc[*]ghi die Zeichenfolge abc*ghi, aber nicht abcdefghi.
Ein Bereich von Zeichen kann als [a-z] angegeben werden, was für eines der Zeichen aus dem Bereich 'a'...'z' steht.
Die spezielle Zeichenfolge [Zahl..Zahl] stellt einen Busnamen mit Index dar und wird deshalb im Schaltplan nicht als Platzhalter behandelt.
SHOW IC1IC1 wird hell und bleibt hell, bis der SHOW-Befehl beendet oder ein anderer Name eingegeben wird.
SHOW IC*Zeigt alle Objekte an deren Namen mit "IC" beginnt.
Mit dem SIGNAL-Befehl definiert man Signale, also die Verbindungen zwischen den Anschlüssen der Packages. Es sind mindestens zwei Stützstellen anzugeben, da sonst keine Luftlinie entstehen kann.
Gibt man signal_name mit ein, dann erhält das Signal den angegebenen Namen.
SIG GND IC1 7 IC2 7 IC3 7;würde z.B. die Pads mit dem Namen '7' der ICs 1...3 miteinander verbinden. Denken Sie an diese Möglichkeit im Zusammenhang mit Script-Dateien. Sie können beispielsweise komplette Netzlisten mit Hilfe von Script-Dateien eingeben.
Den SMASH-Befehl wendet man auf Bauteile an, damit man anschließend die zugehörigen Texte, die den aktuellen Namen, Wert bzw. Attribute repräsentieren, separat bewegen kann (MOVE). Das ist vor allem für Schalt- und Bestückungspläne nützlich.
Bauteile lassen sich auch mit ihrem Namen selektieren. Das ist vor allem dann nützlich, wenn sich das Objekt ausserhalb des gerade dargestellten Bildausschnitts befindet. Beim Selektieren eines aus mehreren Gattern bestehenden Bauteils im Schaltplan muss der volle, aus dem Bauteil- und dem jeweiligen Gatternamen bestehende Name angegeben werden.
Nach dem SMASH-Befehl kann man die >NAME- und >VALUE-Texte behandeln wie alle anderen Texte. Allerdings lässt sich ihr Inhalt nicht mit CHANGE TEXT ändern.
Ein "gesmashtes" Element kann in den "nicht gesmashten" Zustand zurückgeführt
werden, indem es bei gedrückter Shift-Taste (und natürlich aktiviertem
SMASH-Befehl) angeklickt wird.
SMD
Siehe auch PAD,
CHANGE,
NAME,
ROUTE,
Design Rules
Smd: Anschlussfläche für SMD-Bauelemente.
Der SMD-Befehl plaziert einen SMD-Anschluss in einem Package. Die Eingabe der Länge und Breite vor dem Plazieren ändert die Größe des Smds. Die Parameter werden in der aktuellen Maßeinheit angegeben. Sie dürfen maximal 0.51602 Zoll (ca. 13.1 mm) betragen.
Die orientation (siehe Beschreibung bei ADD) darf jeder Winkel im Bereich R0...R359.9 sein. Das S- bzw. M-Flag kann hier nicht benutzt werden.
Die eingegebene Smd-Größe bleibt für nachfolgende Operationen erhalten.
SMD 50 50 -100 '1' erzeugt zum Beispiel ein rundes SMD mit dem Namen '1' an der Position des Mausklicks. Dieses kann man für ein BGA-Gehäuse (Ball Grid Array) verwenden.
NOSTOP | keine Lötstopmaske generieren | |
NOTHERMALS | keine Thermals generieren | |
NOCREAM | keine Lotpastenmaske generieren |
Standardmäßig generieren Smds automatisch Lötstopmaske, Lotpastenmaske und Thermals.
In speziellen Fällen kann es jedoch erwünscht sein, dass einzelne Smds dies nicht tun.
Die obigen NO...-Flags können benutzt werden um diese Eigenschaften zu
unterdrücken.
Ein neu gestarteter SMD-Befehl setzt alle Flags auf ihre Standardwerte zurück.
Sobald ein Flag in der Kommandozeile angegeben wird, gilt es für alle nachfolgend
in diesem SMD-Befehl plazierten Smds.
Den SPLIT-Befehl benötigt man, wenn nachträglich in Wires oder Polygonen noch eine Abknickung erforderlich ist. SPLIT teilt Wires am Anklickpunkt. Das kürzere Stück verläuft gemäß dem eingestellten Knickwinkel (Wire_Bend), das längere verläuft in gerader Linie zum nächsten Aufhängepunkt.
Wird der curve oder @radius Parameter angegeben, so kann ein Kreisbogen als Teil des Linienzuges gezeichnet werden (siehe die ausführliche Beschreibung beim WIRE-Befehl).
Nach dem SPLIT-Befehl werden die betroffenen Wire-Segmente wieder optimiert (entsprechend dem OPTIMIZE-Befehl), sofern nicht zuvor der Befehl
SET OPTIMIZING OFF;eingegeben wurde. Hat man diesen Befehl eingegeben, bleiben die Trennstellen in den Wires erhalten. Sie bleiben auch dann erhalten, wenn man im SPLIT-Befehl dieselbe Stelle zweimal mit der Maus anklickt.
CHANGE WIDTH breiteein und klickt mit der Maus das gewünschte Segment an.
Dieser Befehl wird im Device-Editor verwendet, um die verschiedenen Technologien eines Bauteils im Device-Namen zu bestimmen. Im Schaltplan- oder Board-Editor verhält sich der TECHNOLOGY-Befehl genau so wie "CHANGE TECHNOLOGY".
Einer der Namen, die mit dem TECHNOLOGY-Befehl definiert wurden, ersetzt den Platzhalter '*' im Device-Set-Namen, sobald man das Device in einem Schaltplan plaziert. Der Begriff Technology stammt von der hauptsächlichen Verwendung dieser Funktion verschiedene Varianten eines Devices zu erzeugen, die alle dasselbe Schaltplan-Symbol, dieselbe(n) Package-Variante(n) und dieselben Pin/Pad-Zuordnungen haben. Die Devices unterscheiden sich nur im Namen, der sich beispielsweise für die TTL-Bausteine im Bezug auf Ihre Technologie, wie "L", "LS", oder "HCT" unterscheiden.
Der TECHNOLOGY-Befehl kann nur angewendet werden, wenn schon vorher eine Package-Variante über den PACKAGE-Befehl definiert wurde.
Ist kein '*'-Platzhalter im Device-Set-Namen angegeben, wird der Device-Set-Name um die Technologie-Angabe zu einem vollständigen Device-Namen ergänzt. Bitte beachten Sie, dass die Technologie vor der Package-Variante eingefügt wird. Ist weder '*' noch '?' angegeben, setzt sich der Device-Name aus Device-Set-Name+Technology+Package-Variante zusammen.
Die Namen (name), die mit dem TECHNOLOGY-Befehl angegeben sind, werden zu einer schon vorhandenen Liste des aktuellen Devices hinzugefügt. Geben Sie einen Namen mit '-' an, wird diese Bezeichnung aus der Liste entfernt. Soll der Name mit einem '-' beginnen, muss dieser in einfachen Hochkommas angegeben werden. -* löscht alle Technologien.
Es sind nur die ASCII-Zeichen 33..126 als Technologie-Bezeichnung erlaubt (Kleinbuchstaben werden in Großbuchstaben gewandelt). Die maximale Anzahl von Technologie-Varianten pro Device ist 254.
Die besondere "leere" Technologie kann in mit zwei Hochkommas angegeben werden, also '' (ohne Namen).
Beachten Sie bitte, dass der "Technologien"-Dialog alle Technologien aller Devices in der geladenen Bibliothek enthält, wobei diejenigen, die vom aktuellen Device verwendet werden, markiert sind.
TECHNOLOGY -* '' L LS S HCT;zunächst alle bisherigen Technologien und erzeugt anschließend die folgenden Technologie-Varianten:
7400 74L00 74LS00 74S00 74HCT00
Der TEXT-Befehl plaziert einen Text in einer Zeichnung, oder in einem Bibliothekselement. Bei der Eingabe mehrerer Texte geht man sinnvollerweise so vor, dass man zuerst den TEXT-Befehl aktiviert, dann tippt man den ersten Begriff ein und setzt ihn mit der linken Maustaste ab, dann den zweiten usw.
Als Option kann die Schreibrichtung (orientation) auch textuell angegeben werden. Das ist vor allem für Script-Dateien sinnvoll. Die entsprechenden Schlüsselwörter sind im ADD-Befehl aufgeführt (R0, R90 usw.).
Text wird immer so dargestellt, dass er von vorne oder von rechts zu lesen ist - auch wenn er rotiert wird. Nach zweimaligem Rotieren erscheint er deshalb wieder gleich, aber der Aufhängepunkt liegt nicht mehr links unten, sondern rechts oben. Denken Sie daran, wenn sich ein Text scheinbar nicht mehr selektieren lässt.
Wenn Sie einen Text "auf dem Kopf stehend" darstellen wollen, so können Sie das "Spin"-Flag für diesen Text setzen.
CHANGE SIZE text_size .. CHANGE RATIO ratio ..Maximale Texthöhe: ca. 2 Zoll.
Vector | der programm-interne Vektor-Font | |
Proportional | ein Proportional-Pixel-Font (üblicherweise 'Helvetica') | |
Fixed | ein Monospaced-Pixel-Font (üblicherweise 'Courier') |
Die Schriftart wird mit CHANGE verändert:
CHANGE FONT VECTOR|PROPORTIONAL|FIXED ..Das Programm versucht die Nicht-Vector-Schriftarten so gut wie möglich auszugeben. Da diese jedoch vom Grafik-Interface Ihres Systems gezeichnet werden, können bei Proportional- und Fixed-Schriftart Abweichungen in der Größe bzw. Länge entstehen.
Setzen Sie die Option "Immer Vektor-Schrift" im User-Interface-Dialog,
werden alle Texte mit dem programm-internen Vektor-Font dargestellt und ausgegeben.
Diese Einstellung ist dann sinnvoll, wenn vom System die anderen Schriftarten nicht
korrekt angezeigt werden.
Beim Anlegen eines neuen Boards oder Schaltplans wird die aktuelle Einstellung
in der Zeichnungsdatei gespeichert. So wird sicher gestellt (auch bei der Weitergabe
an Dritte, die evtl. mit anderen Einstellungen arbeiten), dass die Datei mit
Ihren Einstellungen ausgegeben wird.
Verwenden Sie SET VECTOR_FONT OFF|ON, um die
Einstellungen für ein bestehendes Layout oder einen Schaltplan zu ändern.
Wenn Sie Daten mit dem CAM-Prozessor erzeugen, werden Texte immer mit Vector-Font ausgegeben. Andere Fonts werden nicht unterstützt.
Soll ein Text in einem Nicht-Vector-Font von einem Signal-Polygon subtrahiert werden, wird nur das umschließende Rechteck ausgespart. Aufgrund der oben angeführten Probleme bzgl. Einhalten von Größe und Länge der Texte, kann es sein, dass der Text über das umschließende Rechteck hinausgeht. Sollten Sie also Texte von Polygonen subtrahieren wollen, ist es höchst empfehlenswert nur den Vector-Font zu verwenden.
Der Parameter Ratio hat für Nicht-Vector-Fonts keine Bedeutung.
>NAME | Bauteilname (ggf.+Gate-Name) 1) | |
>VALUE | Bauteilwert/-typ 1) | |
>PART | Bauteilname 2) | |
>GATE | Gate-Name 2) | |
>XREF | Bauteil-Querverweis 2) | |
>CONTACT_XREF | Kontaktspiegel 2) | |
>DRAWING_NAME | Zeichnungsname | |
>LAST_DATE_TIME | Datum/Zeit der letzten Änderung | |
>PLOT_DATE_TIME | Datum/Zeit der Plot-Erstellung | |
>SHEETNR | Seitennummer eines Schaltplans 3) | |
>SHEETS | Gesamtzahl der Seiten eines Schaltplans 3) | |
>SHEET | entspricht ">SHEETNR/>SHEETS" 3) |
1) Nur im Package und Symbol
2) Nur im Symbol
3) Nur im Symbol oder Schaltplan
Das Format, in welchem ein Bauteil-Querverweis angezeigt wird, kann über die "Format für Bauteil-Querverweise" Zeichenfolge im Dialog "Optionen/Einstellungen/Verschiedenes" oder über den SET Befehl festgelegt werden. Folgende Platzhalter sind definiert und können in beliebiger Reihenfolge verwendet werden:
%S | die Seitennummer | |
%C | die Spalte auf der Seite | |
%R | die Zeile auf der Seite |
Das Standard-Format ist "/%S.%C%R". Neben den definierten Platzhaltern können Sie auch beliebige andere ASCII-Zeichen verwenden.
>ABC | 123 | |
>ABC= | ABC = 123 | |
>ABC~ | ABC | |
>ABC! | nothing |
!RESETwas als
_____ RESETdargestellt würde. Diese Möglichkeit ist nicht auf Signalnamen beschränkt, sondern kann in allen Texten benutzt werden. Man kann auch nur einen Teil eines Textes überstreichen, wie in
!RST!/NMI R/!Wwas als
___ RST/NMI _ R/Wdargestellt würde. Beachten Sie das zweite Ausrufezeichen, welches das Ende des Überstrichs markiert. Ein Text kann beliebig viele Überstriche enthalten. Soll ein Text ein Ausrufezeichen enthalten, welches keinen Überstrich erzeugt, so muss diesem ein Backslash vorangestellt werden. Um die Notwendigkeit von Backslashes auf ein Minimum zu reduzieren startet ein Ausrufezeichen einen Überstrich dann nicht, wenn es das letzte Zeichen eines Textes ist, oder wenn es unmittelbar von einem Leerzeichen, einem weiteren Ausrufezeichen, einem Apostroph, einem Anführungszeichen oder einer schließenden runden, eckigen oder geschweiften Klammer gefolgt wird. Ein Ausrufezeichen bzw. Komma ohne vorangestellten Backslash, das nach einem Ausrufezeichen steht, welches einen Überstrich begonnen hat, beendet den Überstrich (dass das Komma einen Überstrich beendet ist notwendig für Busse).
Mit dem Befehl UNDO kann man Befehle rückgängig machen. Das ist insbesondere dann nützlich, wenn man z. B. versehentlich etwas gelöscht hat. Die mehrmalige Eingabe von UNDO macht entsprechend viele Befehle rückgängig. Das geht bis zum Zustand nach dem letzen EDIT-, OPEN-, AUTO oder REMOVE-Befehl. Diese Befehle löschen die Vorgeschichte.
Die UNDO-Funktion benötigt Platz auf der Platte und kann die Eingabe von Script-Dateien erheblich verlangsamen. Sie lässt sich bei Bedarf mit dem Befehl
SET UNDO_LOG OFF;abschalten.
UNDO/REDO ist vollkommen in den Mechanismus der Forward&Back-Annotation
integriert.
UPDATE
Siehe auch ADD,
REPLACE
UPDATE;
UPDATE library_name..;
UPDATE package_name@library_name..;
UPDATE +@ | -@ [library_name..];
UPDATE old_library_name = new_library_name;
Der UPDATE-Befehl vergleicht Bauteile in einem Layout oder Schaltplan mit den zugehörigen Bibliothekselementen und aktualisiert diese, sofern Unterschiede festgestellt werden. Wird UPDATE im Bibliotheks-Editor ausgeführt, so werden die in der geladenen Bibliothek befindlichen Packages aus den angegebenen Bibliotheken aktualisiert.
Wird der UPDATE-Befehl ohne Parameter aufgerufen, öffnet sich ein Datei-Dialog, aus dem man die Bibliothek wählt, deren Bauteile mit den Definitionen in der Zeichnung verglichen werden soll.
Werden eine oder mehrere Bibliotheken angegeben, überpüft das Programm alle Bauteile aus diesen Bibliotheken. Der Bibliotheksname kann entweder als einfacher Name (wie "ttl" oder "ttl.lbr") oder mit voller Pfadangabe (wie "/home/mydir/myproject/ttl.lbr" oder "../lbr/ttl") angegeben werden.
Falls der erste Parameter '+@' ist, werden die Namen der angegebenen Bibliotheken (oder aller Bibliotheken, falls keine angegeben wurden) um das '@'-Zeichen gefolgt von einer Zahl erweitert. Dies kann dazu benutzt werden um sicherzustellen, dass die in einer Zeichnung enthaltenen Bibliotheken nicht verändert werden wenn ein Bauteil aus einer neueren Bibliothek gleichen Namens in die Zeichnung eingefügt wird. Bibliotheksnamen die bereits mit dem '@'-Zeichen gefolgt von einer Zahl enden werden nicht verändert.
Falls der erste Parameter '-@' ist, wird das '@'-Zeichen (gefolgt von einer Zahl) vom Ende der angegebenen Bibliotheksnamen (oder aller Bibliotheksnamen, falls keine angegeben wurden) entfernt. Dies funktioniert natürlich nur dann, wenn sich noch keine Bibliothek mit diesem neuen Namen in der Zeichnung befindet.
Bitte beachten Sie, dass "UPDATE +@;" gefolgt von "UPDATE -@;" (und umgekehrt) nicht unbedingt die ursprüngliche Folge von Bibliotheksnamen ergeben muss, da die Reihenfolge, in der die Namen bearbeitet werden, von der Reihenfolge der Bibliotheken in der Zeichnungsdatei abhängt.
Die Bibliotheksdefinitionen, die in einem Schaltplan oder Board gespeichert sind, werden nur anhand des Bibliotheksnamens (z. B. "ttl") identifiziert. Bei der Entscheidung ob das Bauteil überprüft werden soll oder nicht, wird nur dieser Name berücksichtigt. Die Bibliotheken werden in den unter "Libraries" im Directories-Dialog angegebenen Verzeichnissen, von links nach rechts, gesucht. Die erste Bibliothek mit dem angegebenen Namen, die in den Verzeichnissen gefunden wird, wird verwendet. Bitte beachten Sie, dass bei den Bibliotheksnamen nicht zwischen Groß- und Kleinschreibung unterschieden wird. Es ist nicht relevant ob die gesuchte Bibliothek zur Zeit "in use" ist oder nicht. Kann eine Bibliothek nicht gefunden werden, findet auch kein Update statt. In diesem Fall wird keine Fehlermeldung ausgegeben.
Wird der UPDATE-Befehl in einem Schaltplan oder Board gestartet, und sind diese über die Forward&Back Annotation verbunden, aktualisiert EAGLE die Bauteile in beiden Dateien.
In manchen Fällen wird es notwendig sein anzugeben, ob Gates, Pins oder Pads aufgrund ihres Namens oder ihrer Koordinaten zugeordnet werden sollen. Das ist dann der Fall, wenn die zugehörigen Bibliotheksobjekte verschoben oder umbenannt wurden. Wenn zuviele Änderungen gemacht wurden (z. B. wurde ein Pin verschoben und umbenannt), ist ein automatisches Aktualisieren nicht möglich. In diesem Fall sollte man die Bibliotheksänderung entweder in mehreren Schritten machen (erst Umbenennen, dann Verschieben) oder das ganze Element umbenennen, so dass es nicht getauscht wird.
In der Notation old_library_name = new_library_name (beachten Sie, dass vor und nach dem '=' Zeichen jeweils mindestens ein Leerzeichen stehen muss) sucht der UPDATE-Befehl die Bibliothek old_library_name im aktuellen Board oder Schaltplan und aktualisiert diese mit dem Inhalt von new_library_name. Hierbei ist zu beachten, dass old_library_name ein reiner Bibliotheksname sein muss, ohne Pfad, während new_library_name ein vollständiger Pfadname sein kann. Wurde der Update erfolgreich ausgeführt, so wird auch die Bibliothek im aktuellen Board oder Schaltplan entsprechend umbenannt - aus diesem Grund ist diese ganze Operation natürlich nur dann möglich, wenn new_library_name bisher im aktuellen Board oder Schaltplan noch nicht verwendet wurde.
Achtung: Nach jedem Library Update in einem Layout oder Schaltplan sollten Sie unbedingt einen Design Rule Check (DRC) und einen Electrical Rule Check (ERC) durchführen!
Durch die Angabe des Package-Namens (package_name@library_name) kann dafür gesorgt
werden, dass nur ein ganz bestimmtes Package ersetzt wird.
USE
Siehe auch ADD,
REPLACE
USE -*;
USE library_name..;
Der USE-Befehl markiert eine Bibliothek so, dass sie für die Befehle ADD oder REPLACE verfügbar ist.
Rufen Sie den USE-Befehl ohne Parameter auf, öffnet sich ein Datei-Dialog aus dem man eine Bibliotheksdatei auswählen kann. Falls für Bibliotheken im "Optionen/Verzeichnisse"-Dialog ein Pfad definiert wurde, erscheinen im Datei-Dialog die Bibliotheken aus diesem Verzeichnis.
Der spezielle Parameter -* bewirkt, dass alle bisher markierten Bibliotheken aufgegeben werden.
library_name kann der volle Name einer Bibliothek oder ein teilqualifizierter Name sein. Falls library_name der Name eines Verzeichnisses ist, werden alle Bibliotheken aus diesem Verzeichnis markiert.
Der Suffix .lbr braucht nicht angegeben zu werden.
EAGLE übernimmt die komplette Bibliotheksinformation in die Zeichnung, deshalb ist die Bibliothek zum Bearbeiten fertiger Platinen nicht mehr erforderlich.
Änderungen an einer Bibliothek wirken sich nicht auf Elemente in den schon bestehenden Zeichnungen aus. Siehe UPDATE-Befehl, um Bauteile durch aktualisierte Bibliothekselemente zu ersetzen.
USE | öffnet den Datei-Dialog zur Auswahl einer Bibliothek | |
USE -*; | gibt alle vorher mit USE markierten Bibliotheken auf | |
USE demo trans*; | markiert die Bibliothek demo.lbr und alle Bibliotheken mit Namen trans*.lbr | |
USE -* /eagle/lbr; | gibt zunächst alle bereits makierten Bibliotheken auf und markiert dann alle Bibliotheken aus dem Verzeichnis /eagle/lbr |
Gibt man wert an, bevor man das Element mit der Maus selektiert, dann erhalten alle nachfolgend selektierten Elemente diesen Wert. Das ist sehr praktisch, wenn man z. B. eine ganze Reihe von ICs auf denselben Wert setzen will.
Werden name und wert angegeben, so erhält das Element name den angegebenen Wert.
VALUE R1 10k R2 100kHier wurde mehreren Elementen in einem Befehl je ein Wert zugewiesen. Diese Möglichkeit lässt sich auch in Script-Dateien nach folgendem Muster ausnutzen:
VALUE R1 10k \ R2 100k \ R3 5.6k \ C1 10uF \ C2 22nF \ ...Der Backslash ('\') verhindert, dass in der nächsten Zeile ein Parameter mit einem Schlüsselwort verwechselt wird.
On: Anstelle des Platzhalters VALUE (im Symbol definiert) kann im Schaltplan der aktuelle Wert eingegeben werden.
Off: Anstelle des Platzhalters VALUE erscheint im Schaltplan der Device-Name
(z.B. 74LS00N). Er lässt sich im Schaltplan nur nach Rückfrage mit dem
VALUE-Befehl verändern.
VIA
Siehe auch SMD,
CHANGE,
DISPLAY,
SET,
PAD,
Design Rules
Der VIA-Befehl plaziert ein Via in einer Platine. Dabei fügt er das Via zu einem Signal hinzu (falls es auf einer Leitung plaziert wird). Werden durch das Via zwei oder mehrere Signale verbunden, so erfolgt eine Nachfrage, ob dies wirklich beabsichtgt ist.
Die eingegebene Größe bleibt für nachfolgende Operationen erhalten.
Der Bohrdurchmesser entspricht dem Durchmesser, der für Pads eingestellt ist. Er lässt sich mit
CHANGE DRILL durchmesser einstellen und verändern.
Vias erzeugen Bohrsymbole im Layer Drills und die Lötstopmaske in den Layern tStop/bStop.
Square quadratisch
Round rund
Octagon achteckig
Diese Formen gelten nur für die Aussenlagen (Top bzw. Bottom). In den Innenlagen ist die Form immer "rund".
Die Via-Form kann entweder (wie der Durchmesser) eingegeben werden, während der VIA-Befehl aktiv ist, oder sie kann mit dem Befehl
CHANGE SHAPE shape verändert werden.
Die eingegebene Form bleibt für nachfolgende Operationen erhalten.
Beachten Sie bitte, dass die tatsächlichen Werte für Via-Form und -Durchmesser durch die Design Rules des Boards bestimmt werden, in dem das Via verwendet wird.
STOP | Lötstopmaske immer generieren |
Standardmäßig generiert ein Via mit einem Bohrdurchmesser kleiner oder gleich dem
Wert des Design Rules Parameters "Masks/Limit" keine
Lötstopmaske. Das obige STOP-Flag kann dazu benutzt werden, eine Lötstopmaske
für ein Via zu forcieren.
Wenn Sie sehr stark in eine Zeichnung hineinzoomen können folgende Dinge passieren:
Die Syntax zur Bearbeitung dieser Aliase ist:
WINDOW = MyWindow (0 0) (4 3);
Definiert den Alias "MyWindow" der, wenn er wie in
WINDOW myw
benutzt wird, den angegebenen Bildausschnitt einstellt.
Beachten Sie bitte die abgekürzte Verwendung des Aliases,
und dass die Groß-/Kleinschreibung keine Rolle spielt.
Der WIRE-Befehl plaziert Wires (Linien) in einer Zeichnung, und zwar
zwischen erstem und zweitem Koordinatenpunkt. Jeder weitere Punkt
(Mausklick) wird mit dem vorhergehenden verbunden. Dabei werden jeweils
zwei Koordinatenpunkte mit einer geraden Linie verbunden oder mit
zwei, die in einem bestimmten Winkel abknicken. Dieser Knickwinkel
lässt sich mit der rechten Maustaste weiterschalten (wird dabei die Shift-Taste
gedrückt gehalten kehrt sich die Richtung des Weiterschaltens um, bei gedrückter
Ctrl-Taste wird zwischen korrespondierenden Knickwinkeln hin und her geschaltet).
Zwei Mausklicks an derselben Stelle setzen das Leitungsstück ab.
Die speziellen Schlüsselworte ROUND und FLAT, sowie der curve
Parameter, können dazu benutzt werden, Kreisbögen zu zeichnen (siehe unten).
Wird das Zeichnen eines Wires mit gedrückter Ctrl-Taste gestartet, so
schnappt der Startpunkt des neuen Wires an die Koordinaten des
nächstgelegenen existierenden Wires. Dies ist besonders nützlich, wenn
der existierende Wire außerhalb des aktuellen Rasters liegt. Hierbei
werden auch die Breite, der Layer und der Linientyp vom existierenden
Wire übernommen. Falls der aktuelle Kickwinkel 7 ("Freihand") ist, so
setzt der neue Wire den existierenden bündig fort.
Die Breite lässt sich auch zu jeder Zeit mit dem Befehl
Bitte verwenden Sie den WIRE-Befehl nicht für Netze und
Busse sowie für Luftlinien. Siehe
NET,
BUS und
SIGNAL.
WINDOW
Der WINDOW-Befehl legt den sichtbaren Ausschnitt der Zeichnung fest.
Ohne weitere Parameter frischt der Befehl das Bild auf.
WINDOW ;
WINDOW ;
WINDOW
WINDOW scale_factor
WINDOW FIT
WINDOW LAST
F2: WINDOW; Bild auffrischen
F3: WINDOW 2 Hineinzoomen um Faktor 2
F4: WINDOW 0.5 Herauszoomen um Faktor 2
F5: WINDOW (@); Neues Zentrum an aktueller Position des Mauszeigers (falls Befehl aktiviert)
Neues Zentrum
Der WINDOW-Befehl mit einem Mausklick legt diesen Punkt in die
Fenstermitte und lässt den Maßstab unverändert.
Den Bildausschnitt können Sie auch mit den Slidern am Rand des
Arbeitsbereichs verschieben. Mit F5 legen Sie die Position
des Mauszeigers als neues Zentrum fest.
Eckpunkte festlegen
Der WINDOW-Befehl mit zwei Mausklicks legt einen Ausschnitt
fest, bei dem beide Punkte gerade noch innerhalb des Fensters liegen
- eine sehr bequeme Möglichkeit für Ausschnittvergrößerungen.
Das Seitenverhältnis der Zeichnung wird nicht geändert.
Neues Zentrum und zoomen
Der WINDOW-Befehl mit drei Mausklicks legt einen Auschnitt fest, bei
dem der erste Punkt im Zentrum liegt. Das Verhältnis des Abstandes von
Punkt 1 zu Punkt 2 und von Punkt 1 zu Punkt 3 legt den
Vergrößerungsfaktor fest. Dabei gilt: Liegt der dritte Punkt weiter
entfernt vom ersten als der zweite, dann erscheinen die Objekte
größer.
Zoomen
WINDOW 2
vergrößert die Darstellung der Objekte um Faktor zwei.
WINDOW 0.5
verkleinert die Darstellung der Objekte um Faktor zwei.
Zeichnung formatfüllend
WINDOW FIT
stellt die gesamte Zeichnung im Fenster dar.
Zurück zum vorhergehenden Ausschnitt
WINDOW LAST;
schaltet zurück zum vorherigen Bildausschnitt. Ein Bildausschnitt wird bei jedem
WINDOW-Befehl neu hinterlegt, jedoch nicht bei reinen Zoom-WINDOW-Befehlen und
Veränderungen des Bildausschnitts mit der Maus.
Sehr große Zoom-Faktoren
Standardmäßig ist der maximale Zoom-Faktor auf einen Wert begrenzt, bei dem eine
Fläche mit 1mm Durchmesser noch formatfüllend dargestellt wird. Falls Sie weiter
hineinzoomen wollen, können Sie den Schalter "Optionen/Benutzeroberfläche/Zoomfaktor limitieren"
ausschalten. Sie können dann so weit hineinzoomen, bis die feinste Auflösung des
Rasters (0.1 micron) sichtbar ist.
Parameter-Aliase
Parameter-Aliase können dazu benutzt werden, bestimmte Parameter-Einstellungen des WINDOW-Befehls
zu definieren, die später unter einem gegebenen Namen angesprochen werden können.
Die Aliase können auch benutzt werden indem Sie auf den "WINDOW Select"-Button klicken
und die Maustaste gedrückt halten bis die Liste erscheint.
Ein Klick auf den Button mit der rechten Maustaste läßt die Liste ebenfalls erscheinen.
Beispiel:
WIRE
Siehe auch MITER,
SIGNAL,
ROUTE,
CHANGE,
NET,
BUS,
DELETE,
RIPUP,
ARC
WIRE ['signal_name'] [width] [ROUND | FLAT] [curve | @radius] ..
Signalname
Der Parameter signal_name ist in erster Linie für die
Anwendung in Script-Dateien gedacht, die generierte Daten einlesen.
Wenn ein Signalname angegeben ist, werden alle folgenden Wires mit
diesem Signal verbunden, und es wird keine automatische Prüfung
durchgeführt.
Diese Möglichkeit ist mit großer Vorsicht
einzusetzen, da es zu Kurzschlüssen kommen kann, wenn ein Wire so
plaziert wird, dass er unterschiedliche Signale verbindet. Bitte führen
Sie deshalb einen
Design Rule Check durch, nachdem Sie
den WIRE-Befehl mit dem Parameter
signal_name benutzt haben!
Strichstärke
Gibt man den Befehl mit dem Parameter width (z. B. 0.1)
ein, dann wird dadurch die Linienbreite in der aktuellen Maßeinheit
festgelegt. Zulässig ist maximal 0.51602 Zoll (ca. 13.1 mm). Die
Linienbreite bleibt für nachfolgende Operationen erhalten.
CHANGE WIDTH breite
ändern oder voreinstellen.
Linienarten
Linien können in folgenden Arten (styles) gezeichnet werden::
Die Linienart kann mit dem CHANGE-Befehl verändert werden.
DRC und Autorouter behandeln alle Linienarten als durchgezogen (Continuous). Andere Linienarten werden hauptsächlich für elektrische oder mechanische Zeichnungen verwendet und sollten nicht in Signallayern benutzt werden. Der DRC meldet einen Fehler, wenn Sie eine Nicht-continuous-Linie als Teil einer signalführenden Leiterbahn mit einem Pad verbinden.
Der gültige Bereich für curve ist -360..+360, wobei der Wert angibt aus welchem Anteil eines Vollkreises der Kreisbogen besteht. Ein Wert von 90 beispielsweise steht für einen Viertelkreis, während 180 einen Halbkreis ergibt. Der maximale Wert von 360 kann nur theoretisch erreicht werden, da dies bedeuten würde, dass der Kreisbogen aus einem vollen Kreis besteht, der, weil Anfangs- und Endpunkt auf dem Kreis liegen müssen, einen unendlich großen Durchmesser haben müsste. Positive Werte für curve bedeuten, dass der Kreisbogen im mathematisch positiven Sinne (also gegen den Uhrzeigersinn) gezeichnet wird. Falls curve gleich 0 ist, handelt es sich um eine gerade Linie ("keine Krümmung"), was letztlich einem Wire entspricht. Beachten Sie bitte, dass, um den curve Parameter vom width Parameter unterscheiden zu können, dieser immer mit Vorzeichen ('+' oder '-') angegeben werden muss, auch wenn es eine positive Zahl ist.
Zum Beispiel würde der Befehl
WIRE (0 0) +180 (0 10);einen Halbkreis entgegen dem Uhrzeigersinn vom Punkt (0 0) nach (0 10) zeichnen.
Wird ein radius angegeben, so erhält der Kreisbogen diesen Radius. Genau wie der curve-Parameter muss auch der radius mit Vorzeichen angegeben werden um die Orientierung des Kreisbogens zu bestimmen. Zum Beispiel zeichnet der Befehl
WIRE (0 0) @+100 (0 200);einen Halbkreis vom Punkt (0 0) nach (0 200) (mit Radius 100), entgegen dem Uhrzeigersinn. Liegt der Endpunkt des Wires um mehr als den doppelten Radius vom Startpunkt entfernt, so wird eine gerade Linie gezeichnet.
Der Kreisbogen-Radius kann auch dadurch definiert werden, dass der Wire-Endpunkt mit gedrückter Ctrl-Taste gesetzt wird (typischerweise am Mittelpunkt des Kreises auf dem der Kreisbogen liegen soll). In diesem Fall wird der Punkt nicht als eigentlicher Endpunkt genommen, sondern dazu benutzt den Radius des Kreisbogens festzulegen. Sie können dann den Mauszeiger bewegen und einen Kreisbogen mit dem gegebenen Radius plazieren (die rechte Maustaste zusammen mit Ctrl schaltet die Orientierung des Kreisbogens um). Falls Sie den Mauszeiger weiter als den doppelten Radius vom Startpunkt wegbewegen wird eine gerade Linie gezeichnet.
Um jeden beliebigen Kreisbogen mit dem WIRE-Befehl zeichnen zu können (was insbesondere bei der
Generierung von Script-Dateien wichtig ist) sind die Schlüsselworte ROUND und
FLAT im WIRE-Befehl ebenfalls erlaubt. Beachten Sie aber, dass diese nur bei
echten Kreisbögen Anwendung finden (geradlinige Wires haben immer runde Enden). Standardmäßig
haben mit dem WIRE-Befehl erzeugte Kreisbögen runde Enden.
WRITE
Der WRITE-Befehl sichert eine Zeichnung oder eine Bibliothek im
Projektverzeichnis.
Man kann einen neuen Namen wählen oder denjenigen beibehalten,
unter dem die Zeichnung/Bibliothek geladen wurde.
WRITE drawing_name
WRITE @drawing_name
Dem Namen kann man auch einen Pfadnamen voranstellen, wenn die Datei in ein bestimmtes Verzeichnis gesichert werden soll.
Wird dem neuen Namen ein @ vorangestellt, so wird auch der Name der geladenen Zeichnung entsprechend geändert. Die zugehörige Platine/Schaltplan wird dann automatisch ebenfalls unter diesem Namen abgespeichert, und der Undo-Puffer wird gelöscht.
Um die Konsistenz der Forward&Back-Annotation zwischen Platine und Schaltplan zu gewährleisten, verhält sich der WRITE-Befehl wie folgt:
Die restlichen Optionen dienen der Seiteneinrichtung.
Drucken eines Textes
Wenn Sie Print aus dem
Kontext-Menü des Icons einer Textdatei im
Control Panel oder aus dem Datei
Menü des Text-Editors auswählen, erhalten Sie
einen Dialog mit folgenden Optionen:
Die restlichen Optionen dienen der Seiteneinrichtung.
Die Standardwerte für die Ränder werden vom Druckertreiber übernommen
und definieren die maximal bedruckbare Fläche.
Sie können hier auch kleinere Werte angeben, wobei es von Ihrem Drucker
abhängt, ob die angegebenen Ränder dann eingehalten werden können oder nicht.
Nach der Auswahl eines anderen Druckers kann es sein, dass neue
gerätespezifische Grenzen wirksam werden; die vorgegebenen Ränder
werden dann automatisch vergößert, falls der neue Drucker dies erfordert.
Beachten Sie bitte, dass die Werte nicht automatisch verkleinert werden,
auch wenn der neue Drucker kleinere Werte zulassen würde. Um die
kleinstmöglichen Werte für die Ränder zu ermitteln, geben Sie in jedes Feld
0 ein. Dieser Wert wird dann durch das gerätespezifische Minimum
ersetzt.
Der Wert im X Feld gibt den Kalibrierungsfaktor in der Richtung
an, in der sich der Druckkopf bewegt. Der Wert im Y Feld
kalibriert die Koordinaten in Papiervorschubrichtung.
ACHTUNG: Wenn Sie mit Ihrem Drucker Produktionsvorlagen erzeugen,
prüfen Sie bitte immer das Druckergebnis auf Einhaltung der exakten Maße!
Die Standardwerte von 1 gehen davon aus, dass der Drucker in beiden
Richtungen exakt druckt.
Bei gespiegelter Ausgabe enthält die Bildunterschrift das Wort
"mirrored", und falls der Vergrößerungsfaktor nicht
1.0 ist, wird er als f=... mit angegeben
(der Vergrößerungsfaktor wird mit 4 Nachkommastellen ausgegeben, so dass
auch eine Angabe von f=1.0000 nicht bedeutet, dass der Faktor
exakt 1.0 ist).
Die folgenden Hilfe-Themen führen Sie durch die erforderlichen
Schritte, von der Auswahl der Daten-Datei bis zur Konfiguration des
Ausgabegeräts (Device).
Siehe auch Drucken auf dem System-Drucker
Seiteneinrichtung
Der Druck-Dialog enthält einige Optionen die bestimmen, wie eine Zeichnung oder ein Text
auf dem Papier erscheinen soll.
Rand
Definiert den linken, oberen, rechten und unteren Rand. Die Werte werden
entweder in Millimeter oder Inch angegeben, je nachdem, welche Einheit
weniger Dezimalstellen ergibt.
Kalibrieren
Falls Sie mit Ihrem Drucker Produktionsvorlagen erstellen wollen,
kann es nötig sein, den Drucker zu kalibrieren um exakte 1:1
Ausdrucke Ihrer Layouts zu erhalten.
Anordnung
Definiert die vertikale und horizontale Anordnung der Zeichnung auf dem Papier.
Bildunterschrift
Aktiviert die Ausgabe einer Bildunterschrift mit Datum und Uhrzeit des
Ausdrucks sowie dem Dateinamen.
CAM-Prozessor
Mit dem CAM-Prozessor können Sie jede Layer-Kombination an ein Peripheriegerät
oder in eine Datei ausgeben.
CAM-Prozessor-Hauptmenü
Im CAM-Prozessor-Hauptmenü können Sie wählen, von welcher
Datei die Ausgabe generiert werden soll, Sie können Blenden- und
Bohrer-Konfigurationsdateien bearbeiten oder Job-Dateien laden und
sichern.
Datei
Öffnen | Board... Board-Datei für Ausgabe laden | |
Schaltplan... Schaltplan-Datei für Ausgabe laden | ||
Bohrertabelle... Bohrer-Konfigurationsdatei zum Editieren laden | ||
Blendentabelle... Blenden-Konfigurationsdatei zum Editieren laden | ||
Job... Anderen Job laden oder neuen erzeugen | ||
Zuletzt geöffnet | Lädt ein der zuletzt geöffneten Dateien | |
Job speichern... | Gegenwärtigen Job sichern | |
Schließen | CAM-Prozessor-Fenster schließen | |
Beenden | Programm beenden |
Alle abwählen | Alle Layer deselektieren | |
Ausgewählte zeigen | Nur die selektierten Layer anzeigen | |
Alle zeigen | Alle Layer anzeigen |
Control Panel | Zum Control Panel wechseln | |
1 Schaltplan - ... | Zu Fenster 1 wechseln | |
2 Board - ... | Zu Fenster 2 wechseln |
Allgemein | Allgemeine Hilfe-Seite öffnen | |
Kontext | Öffnet die Hilfe-Seite für den momentanen Kontext | |
CAM-Prozessor | CAM-Prozessor-Hilfe öffnen | |
Job-Hilfe | Hilfe zum Job-Mechanismus anzeigen | |
Device-Hilfe | Hilfe zu Ausgabe-Devices anzeigen |
Ein typischer CAM-Prozessor-Job könnte zum Beispiel zwei Sections enthalten: eine, die die Fotoplot-Dateien für die Bestückungsseite erzeugt, und eine weitere, die die entsprechenden Daten für die Lötseite erzeugt.
Sie können die Größe der Ausgabe auf eine bestimmte Anzahl von Seiten beschränken, indem Sie einen negativen Wert im Scale-Feld eingeben. In diesem Fall wird der Skalierungsfaktor auf 1.0 voreingestellt und so lange verkleinert, bis die Zeichnung gerade noch auf die angegebene Anzahl von Seiten passt. Wird zum Beispiel "-2" eingegeben, so entsteht eine Zeichnung die nicht mehr als zwei Seiten benötigt. Beachten Sie bitte, dass die zur Verfügung stehende Blattgröße (Width und Height Parameter) Ihres Ausgabegeräts richtig eingestellt sein muss, damit dieser Mechanismus funktioniert. Diese Größen können in den Width- und Height-Feldern oder durch Editieren der Datei eagle.def eingestellt werden.
D010 annulus 0.004 x 0.000 D010 round 0.004 D040 square 0.004 D054 thermal 0.090 x 0.060 D100 rectangle 0.060 x 0.075 D104 oval 0.030 x 0.090 D110 draw 0.004Die Datei darf mehrere Blenden enthalten, die den gleichen D-Code benutzen, so lange alle von einem der Typen draw, round oder annulus sind und die gleiche Größe haben (im Falle von annulus muss dann der zweite Größenparameter 0 sein). Dies kann dazu benutzt werden um Blenden, die letztlich zum gleichen Zeichenergebnis führen, auf einen gemeinsamen D-Code abzubilden.
Die Optionen "Annulus" und "Thermal" werden gewählt, wenn bei eingeschalteter Blendenemulation zusätzlich Annulus- und/oder Thermal-Symbole emuliert werden sollen.
Achtung: Die Blendenemulation kann zu sehr langen Plot-Zeiten führen
(hohe Kosten!).
Toleranzen werden in Prozent angegeben.
Bitte beachten Sie, dass dadurch Ihre "Design Rules" unter Umständen
nicht mehr eingehalten werden!
Die Datei kann mit Hilfe eines User-Language-Programms drillcfg.ulp, das sich im
ULP-Verzeichnis Ihrer EAGLE-Installation befindet, erzeugt werden.
Verwenden Sie dazu den Befehl RUN.
Toleranzen werden in Prozent angegeben.
Kann dazu verwendet werden den Nullpunkt von großformatigen Plottern in die linke
untere Ecke zu verlegen.
Bitte beachten Sie, dass der CAM-Prozessor die Zeichnung auf mehrere
Teile aufteilt, falls das umschließende Rechteck um alle in der
Datei enthaltenen Objekte (auch in Layern, die nicht ausgebeben
werden) nicht auf die bedruckbare Fläche passt.
Bitte verwenden Sie einen Text-Editor,
der keine Steuerzeichen in die Datei schreibt.
Folgende Dateinamen sind üblich:
Blenden-Toleranzen
Falls Sie Toleranzen für Draw- bzw. Blitz-Blenden (Flash) angeben,
verwendet der CAM-Prozessor Blenden innerhalb dieser Toleranz, falls
keine mit dem exakten Maß verfügbar ist.
Bohrer-Konfigurationsdatei
Falls der Treiber für die Bohrstation die Bohrerkonfiguration nicht automatisch
generieren kann, muss bekannt sein, welche Bohrer den Codes in der Ausgabedatei
entsprechen. Diese Zuordnung ist in der Bohrer-Konfigurationsdatei definiert.
Beispiel
T01 0.010
T02 0.016
T03 0.032
T04 0.040
T05 0.050
T06 0.070
Bohrer-Toleranzen
Falls Sie eine Toleranz für Bohrer angeben, verwendet der
CAM-Prozessor Bohrer innerhalb dieser Toleranz, falls keiner mit dem
exakten Maß verfügbar ist.
Offset
Offset in x- und y-Richtung (Inch, Dezimalzahl)
Bedruckbarer Bereich
Height
Bedruckbarer Bereich in y-Richtung (Inch).
Width
Bedruckbarer Bereich in x-Richtung (Inch).
Stiftdaten
Diameter
Stift-Durchmesser in mm: Wird beim Füllen von Flächen zur
Berechnung der notwendigen Anzahl von Linien benutzt.
Velocity
Stiftgeschwindigkeit in cm/s (bei Stift-Plottern, die
unterschiedliche Geschwindigkeiten unterstützen). Die
Plotter-Default-Geschwindigkeit wählt man mit dem Wert 0.
Eigenen Device-Treiber definieren
Die Ausgabetreiber sind in der Textdatei eagle.def definiert.
Dort finden Sie Details, wie man einen eigenen Treiber definiert.
Am besten kopieren Sie einen Block eines existierenden Treibers
für denselben Gerätetyp und passen dann die Paramter an.
Ausgabedatei
Die Ausgabedatei enthält die Daten, die vom CAM-Prozessor
erzeugt werden.
=======================================================
Datei- Selekt. Layer Bedeutung
name
=======================================================
*.cmp Top, Via, Pad Bauteilseite
*.ly2 Route2, Via, Pad Multilayer-Innenlage
*.ly3 Route3, Via, Pad Multilayer-Innenlage,
*.ly4 $User1 Multilayer-Versorgungslage
... ...
*.sol Bot, Via, Pad Lötseite
*.plc tPl, Dim, tName, Bestückungsplan Bauteilseite
*.pls bPl, Dim, bName, Bestückungsplan Lötseite
*.stc tStop Lötstopmaske Bauteilseite
*.sts bStop Lötstopmaske Lötseite
*.drd Drills, Holes Bohrdaten für NC-Bohrmaschine
=======================================================
Platzhalter
Der Ausgabedateiname kann entweder direkt eingegeben oder mittels Platzhaltern
dynamisch zusammengesetzt werden. Ein Platzhalter besteht aus dem Prozentzeichen
('%') gefolgt von einem Buchstaben. Folgende Platzhalter sind
definitert:
%D{xxx} | ein String, der nur im Namen der Datendatei eingesetzt wird | |
%E | die Extension der geladenen Datei (ohne den '.') | |
%H | das Home-Verzeichnis des Benutzers | |
%I{xxx} | ein String, der nur im Namen der Info-Datei eingesetzt wird | |
%L | die Layer-Nummern für blind&buried Vias (siehe unten) | |
%N | der Name der geladenen Datei (ohne Pfad und Extension) | |
%P | Verzeichnis-Pfad der geladenen Datei (ohne Dateinamen) | |
%% | das Zeichen '%' |
Zum Beispiel würde die folgende Definition
%N.cmp%I{.info}
den Namen boardname.cmp für die Datendatei und boardname.cmp.info für die Info-Datei ergeben (falls das gewählte Device eine Info-Datei erzeugt).
boardname.drl.0104welches die Bohrdatei für das Lagenpaket 1-4 wäre. Wenn Sie die Layer-Nummern an anderer Stelle stehen haben wollen, so können Sie dafür den Platzhalter %L verwenden:
%N.%L.drlergäbe demnach
boardname.0104.drlDer Name der Drill-Info-Datei wird immer ohne Layer-Nummern erzeugt und ein eventueller '.' vor dem %L wird entfernt. Dateien aus früheren CAM-Prozessor-Aufrufen, die dem gegebenen Pattern für den Namen der Bohrdateien entsprechen würden, werden gelöscht bevor neue Dateien erzeugt werden. Es gibt eine Drill-Info-Datei pro Job, die (unter anderem) eine Liste aller generierten Bohrdateien enthält.
Bei Peripheriegeräten, die unterschiedliche Farben unterstützen, geben Sie die Farbnummer für den jeweiligen Layer an.
Folgende Layer-Kombinationen und Ausgabe-Dateinamen sind üblich:
======================================================= Datei- Selekt. Layer Bedeutung name ======================================================= *.cmp Top, Via, Pad Bauteilseite *.ly2 Route2, Via, Pad Multilayer-Innenlage *.ly3 Route3, Via, Pad Multilayer-Innenlage, *.ly4 $User1 Multilayer-Versorgungslage ... ... *.sol Bot, Via, Pad Lötseite *.plc tPl, Dim, tName, Bestückungsplan Bauteilseite *.pls bPl, Dim, bName, Bestückungsplan Lötseite *.stc tStop Lötstopmaske Bauteilseite *.sts bStop Lötstopmaske Lötseite *.drd Drills, Holes Bohrdaten für NC-Bohrmaschine =======================================================
Das User-Language-Programm outlines.ulp enthält alle Schritte um diese Daten zu erzeugen. Die folgende ausführliche Beschreibung zeigt was zu tun ist, um Konturdaten zu generieren.
Werte ungleich 0 für den Isolate-Parameter können dafür verwendet werden, beim sequentiellen Arbeiten mit unterschiedlichen Fräserdurchmessern bereits gefräste Bereiche auszusparen.
Der Autorouter wird auch als "Follow-me"-Router im ROUTE-Befehl verwendet.
Bitte überprüfen Sie Ihre Lizenz, um
festzustellen, ob Sie Zugriff zum Autorouter haben.
Der DRC wird in einem Platinen-Fenster ausgeführt. Er überprüft das
Design auf Überlappung von unterschiedlichen Potentialen,
Abstandsverletzungen etc.
Der Design Rule Check prüft das Board gegenüber diesen Regeln
und meldet Verstöße gegen sie.
Die Design Rules eines Boards können mit Hilfe des Design-Rule-Dialogs modifiziert werden.
Der Dialog öffnet sich, wenn man den DRC-Befehl ohne
abschließendes ';' aufruft.
Neu angelegte Boards übernehmen ihre Design Rules aus der Datei 'default.dru',
die in dem ersten Verzeichnis, das im "Optionen/Verzeichnisse/Design-Regeln"-Pfad
aufgeführt ist, gesucht wird.
Ist keine solche Datei vorhanden, so gelten die programminternen Standardwerte.
Hinweis zu den Werten für Clearance und Distance: da die interne
Auflösung der Koordinaten 1/10000mm beträgt kann der DRC nur Fehler größer als 1/10000mm
zuverlässig melden.
Falls die Design Rules verändert wurden, wird an den Namen in der Titelzeile
des Dialogs ein Stern ('*') angehängt, um die Veränderung anzuzeigen.
Diese Markierung verschwindet wieder, sobald die Design Rules explizit abgespeichert
werden, oder ein neuer Satz von Design Rules geladen wird.
Das Layer-Setup wird durch den String im "Setup"-Feld definiert. Dieser String
besteht aus einer Sequenz von Layer-Nummern, getrennt durch jeweils ein '*'
oder '+', wobei '*' für Kern-Material (auch als FR4
oder dergleichen bekannt) und '+' für Prepreg (oder sonstiges
Isolationsmaterial) steht. Die tatsächliche Kern- und Prepreg-Sequenz
hat keine weitergehende Bedeutung für EAGLE, ausser der unterschiedlichen farblichen
Darstellung in der Anzeige oben links auf diesem Tab (das tatsächliche Multilayer-Setup
muss auf jeden Fall mit dem Leiterplatten-Hersteller abgesprochen werden). Die Vias
werden dadurch definiert, dass eine Sequenz von Layern in (...) eingeschlossen
wird. Der Setup-String
Bitte beachten Sie, dass ein Polygon mit dem besonderen Namen _OUTLINES_ dazu verwendet
wird Kontur-Daten zu erzeugen und dieses die Design Rules
nicht einhält.
Aus Gründen der Kompatibilität zu Version 3.5x gilt:
Wird der Parameter für den Mindestabstand zwischen Kupfer und Dimension auf 0
gesetzt, so werden Objekte im Dimension-Layer beim Freirechnen der Polygone nicht
mehr berücksichtigt (ausgenommen Holes, die immer berücksichtigt werden). Es findet
dann auch keine Abstandsprüfung zwischen Kupfer und Dimension mehr statt.
Überprüfen des Designs
EAGLE hat zwei Befehle zur Überprüfung Ihres Designs:
Der ERC wird in einem Schaltplan-Fenster ausgeführt. Er überprüft das
Design auf elektrische Konsistenz.
Design Rules
Design Rules legen alle Parameter fest denen ein Platinen-Layout entsprechen muss.
Datei
Das Datei-Tab zeigt eine Beschreibung des aktuellen Satzes von Design Rules und erlaubt
über Change diese Beschreibung zu verändern (das ist empfehlenswert, wenn Sie eigene
Regeln definieren). Über Load kann man einen anderen Satz von Design Rules
aus einer Datei laden, Save as.. speichert die aktuellen Einstellungen in eine
Datei.
Bitte beachten Sie, dass die Design Rules immer in der Board-Datei gespeichert werden,
so dass diese Regeln auch für die Produktion der Platine bei Weitergabe der brd-Datei
an den Leiterplatten-Hersteller gelten. Die "Load..." und "Save as..." Buttons dienen
lediglich dazu die Design Rules einer Platine in eine externe Datei zu kopieren bzw.
sie von dort zu laden.
Layers
Im Layers-Tab legt man fest welche Layer die Platine tatsächlich verwendet,
wie dick die einzelnen Kupfer- bzw. Isolationslagen sind und welche Via-Übergänge
möglich sind (bitte beachten Sie, dass sich dies nur auf echte Vias bezieht;
selbst wenn kein Via von Layer 1 bis 16 im Layer-Setup definiert wurde sind Pads
dennoch erlaubt).
(1*16)
würde demnach für eine zweilagige Platine bestehend aus den Layern 1 und 16 stehen,
mit ganz durchgehenden Vias (dies ist auch der Standardwert).
Für eine Multilayer-Platine könnte das Setup etwa so aussehen:
((1*2)+(15*16))
was eine vierlagige Platine darstellt deren Layer-Paare 1/2 und 15/16 auf Kern-Material
gefertigt und durchgebohrt werden, und schließlich mit Prepreg verpresst und am Ende
nochmals ganz durchgebohrt werden.
Neben Vias die durch einen ganzen Lagenstapel gehen (gemeinhin als buried Vias bekannt
wenn sie keine Verbindung zum Top- und Bottom-Layer haben) gibt es auch solche, die
nicht ganz durch den Lagenstapel gebohrt werden, sondern an einem Layer im Inneren
des Stapels enden. Solche Vias werden blind Vias genannt und werden im "Setup"-String
dadurch festgelegt, dass eine Layer-Sequenz in [t:...:b] eingeschlossen wird,
wobei t und b die Layer bezeichnen bis zu denen das Via von der Ober-
bzw. Unterseite aus gesehen geht. Ein mögliches Setup mit blind Vias könnte so
aussehen:
[2:1+((2*3)+(14*15))+16:15]
Dies ist im wesentlichen das vorherige Beispiel, erweitert um zwei zusätzliche
Aussenlagen, die mit den nächstinneren Lagen durch blind Vias verbunden sind.
Es ist auch möglich nur einen der Parameter t bzw. b zu benutzen, so dass
[2:1+((2*3)+(15*16))]
ebenfalls ein gültiges Setup wäre. blind Vias müssen nicht am Top oder Bottom
Layer beginnen, sondern können auch in innenliegenden Lagenstapeln verwendet werden, etwa in
[2:1+[3:2+(3*4)+5:4]+16:5]
Ein blind Via von Layer a nach Layer b implementiert auch alle
möglichen blind Vias von Layer a nach allen Layern zwischen a und b,
so dass
[3:1+2+(3*16)]
blind Vias von Layer 1 nach 2 und von Layer 1 nach 3 erlauben würde.
Clearance
Im Clearance-Tab definiert man verschiedene Mindestabstände zwischen
Objekten in den Signallayern. Das sind üblicherweise Mindestwerte, die vom
Fertigungsprozess beim Leiterplatten-Hersteller vorgegeben werden. Sprechen
Sie sich dazu mit dem Hersteller ab.
Der aktuelle Mindestabstand zwischen Objekten, die zu unterschiedlichen Signalen
gehören, werden auch von den Werten der unterschiedlichen Netzklassen beeinflusst.
Distance
Im Distance-Tab legt man die Mindestabstände zwischen Objekten in den Signallayern
und dem Platinenrand (Dimension) und zwischen Bohrungen (Holes) fest.
Achtung: Es werden nur Signale gegenüber Dimension geprüft, die auch tatsächlich
an mindestens einem Pad oder Smd angeschlossen sind. So ist es erlaubt, Eckwinkel
zur Markierung der Platinenbegrenzung in den Signallayern zu zeichnen ohne
dass der DRC Fehler meldet.
Sizes
Unter Sizes legt man die Mindestbreite von Objekten in Signallayern und den
Mindestbohrdurchmesser fest. Diese Werte sind absolute Minimalmaße, die vom
Herstellungsprozess der Platine bestimmt werden. Sprechen Sie sich hierzu
mit dem Leiterplatten-Hersteller ab.
Die Mindestbreite von Leiterbahnen und der Mindestbohrdurchmesser von Durchkontaktierungen
kann ausserdem für unterschiedliche Netzklassen festgelegt werden.
Restring
Im Restring-Tab definiert man die Mindestbreite des Kupferrings, die nach
dem Bohren eines Pads oder Vias um die Bohrung herum stehen bleibt. Die Werte
werden in Prozent des Bohrdurchmessers angegeben. Ausserdem kann ein Minimal- und
ein Maximalwert festgelegt werden. Die Restringbreiten für Pads können im Top-,
Bottom- und in den Innen-Layern unterschiedlich sein, während bei Durchkontaktierungen
(Vias) nur zwischen Aussen- und Innenlagen unterschieden wird.
Wenn für den tatsächlichen Durchmesser eines Pads (in der Bibliothek festgelegt) oder
eines Vias ein größerer Wert vorgegeben wird, wird dieser in den Aussenlagen verwendet.
Pads können beim Anlegen von Packages mit dem Durchmesser 0 gezeichnet werden, so
dass der Restring vollständig in Abhängigkeit des Bohrdurchmessers berechnet werden
kann.
Shapes
Unter Shapes definiert man die Formen der Smds und Pads.
Smds werden üblicherweise als Rechtecke (mit "Roundness" = 0) in der Bibliothek
definiert. Wenn Sie in Ihrem Design gerundete Smds verwenden wollen, kann man hier
einen Rundungsfaktor (Roundness) angeben.
Pads werden normalerweise als Octagon (längliche Octagons wo sinnvoll)
in der Bibliothek festgelegt. In den Combo-Boxen können Sie festlegen,
ob die Pads im Layout so verwendet werden wie sie auch in der Bibliothek
definiert wurden, oder ob alle rechteckig, rund oder octagonal sein sollen.
Das kann man für Top- und Bottom-Layer separat definieren.
Wird das "erste" Pad in der Bibliothek als solches markiert, kann man in der
dritten Combo-Box bestimmen, welche Form dieses Pad haben soll
(entweder rund, rechteckig, octagonal oder keine spezielle Form).
Die Elongation-Parameter legen das Aussehen von Pads mit der Form Long bzw. Offset fest.
Supply
Unter Supply legt man die Abmessungen für Thermal- und Annulus-Symbole fest, die
in Versorgungslagen verwendet werden.
Bitte beachten Sie, dass das tatsächliche Aussehen dieser Symbole von ihrer
Definition abweichen kann, wenn man Daten mit Photoplottern erzeugt, die besondere
Thermal/Annulus-Blenden verwenden. Siehe hierzu auch die Bemerkungen zum Thema
"Versorgungs-Layer" beim LAYER-Befehl.
Querverweis-Labels werden typischerweise am rechten oder linken Rand einer
Schaltplanseite platziert und zeigen die nächste (bzw. vorherige) Seite an,
auf der ein bestimmtes Netz vorkommt. Eine genaue Beschreibung der
Funktionsweise finden Sie beim LABEL-Befehl.
Bei der späteren Anzeige wird der '>XREF'-Platzhaltertext (gemäß
dem Format für Bauteil-Querverweise) durch die
Seitennummer und Zeichnungsrahmen-Koordinate des Must-Gatters dieses
Bauteils ersetzt.
Das Kapitel Kontaktspiegel erklärt,
wie auf der Seite, die die Spule enthält, ein Querverweis auf die Kontakte
dargestellt werden kann.
Die Kontakt-Symbole müssen den Platzhaltertext '>XREF' enthalten,
damit Bauteil-Querverweise erzeugt
werden.
Die Kontakt-Symbole sollten so gezeichnet werden, dass die Pins nach oben bzw.
unten zeigen, und dass der Ursprung in der Mitte des Symbols liegt.
Das erste Kontakt-Gatter in der Device-Set-Zeichnung sollte an der X-Koordinate
0 platziert werden, und seine Y-Koordinate sollte so groß sein, dass sein unterer
Pin sich im positiven Bereich befindet, typischerweise bei 100mil. Die restlichen
Kontakt-Gatter sollten rechts davon platziert werden, mit ihrem Ursprung
an der gleichen Y-Koordinate wie das erste. Das Spulen-Gatter kann an einer
beliebigen Stelle platziert werden.
Im Schaltplan wird der Kontaktspiegel an der selben X-Koordinate dargestellt wie
die Spule, und direkt unterhalb der Y-Koordinate, die durch den Platzhaltertext
'>CONTACT_XREF' definiert wird. Dieser Platzhaltertext kann entweder
in einem Zeichnungsrahmen-Symbol oder direkt auf der Schaltplanseite platziert
werden. Kommt er an beiden Stellen vor, so wird derjenige in der Schaltplanseite
genommen. Der Text selber ist auf der Schaltplanseite nicht sichtbar.
Die grafische Darstellung des Kontaktspiegels besteht aus allen Gattern, die einen
'>XREF' Platzhaltertext haben (ausgenommen das erste Must-Gatter,
welches die Spule ist und normalerweise keinen solchen Text hat). Die Gatter werden
um 90 Grad gedreht und von oben nach unten in dem gleichen Abstand dargestellt,
den sie im Device-Set von links nach rechts haben. Ihre Seitennummern und
Zeichnungsrahmen-Koordinaten werden rechts neben jedem verwendeten Gatter angezeigt.
Jegliche anderen Texte, die in den Symbolen definiert wurden, werden nicht
dargestellt, wenn die Symbole zur Anzeige des Kontaktspiegels verwendet werden.
Beachten Sie bitte, dass der Kontaktspiegel nicht mit der Maus selektiert werden kann.
Falls Sie ihn verschieben wollen, so bewegen Sie die Spule und der Kontaktspiegel
folgt ihr automatisch.
Es kann vorkommen, dass der Kontaktspiegel nach dem Einfügen, Verschieben, Löschen
oder Vertauschen von Kontakt-Gattern, bzw. einer Veränderung des '>CONTACT_XREF'
Platzhaltertexts, nicht mehr aktuell ist. Ein neuer Bildaufbau aktualisiert ihn wieder.
Um diese Eigenschaft zu Nutzen, müssen Sie ein
User-Language-Programm (ULP) schreiben
und anschließend ausführen.
Die folgenden Abschnitte beschreiben die User Language im Detail:
Querverweise
Es gibt mehrere Möglichkeiten, Querverweise in EAGLE Schaltplänen zu
erzeugen, die in den folgenden Abschnitten beschrieben werden.
Querverweis-Labels
Ein einfaches Label kann dazu benutzt werden, den Namen eines Netzes im Schaltplan
sichtbar zu machen. Wird bei einem Label die xref-Eigenschaft aktiviert,
so ändert sich sein Verhalten und es wird zum Querverweis-Label.
Bauteil-Querverweise
Elektro-Schaltpläne enthalten oft elektromechanische Relais ("Schütze"), die
aus einem Spulensymbol und einem oder mehreren Kontaktsymbolen bestehen. Wenn Spule
und Kontakte auf unterschiedliche Schaltplanseiten verteilt sind, ist es nützlich,
wenn bei jedem Kontakt angegeben ist, auf welcher Seite seine Spule zu finden ist.
Dies kann dadurch erreicht werden, dass dem Spulengatter im Device-Set der Add-Level
Must gegeben wird (siehe ADD-Befehl) und der
Platzhaltertext '>XREF' in den Kontaktsymbolen platziert wird
(siehe TEXT-Befehl).
Kontaktspiegel
In einem aus mehreren Seiten bestehenden Elektro-Schaltplan mit
elektro-mechanischen Relais, deren Spulen und Kontakte auf unterschiedliche
Seiten verteilt sind, ist es nützlich sehen zu können, auf welchen Seiten
sich die einzelnen Kontakte eines Relais befinden.
EAGLE kann einen solchen Kontaktspiegel automatisch anzeigen, wenn
folgende Voraussetzungen erfüllt sind.
User Language
Die EAGLE-User-Language gestattet den Zugriff auf die EAGLE-Datenstrukturen
und kann beliebige Ausgabedateien erzeugen.
Syntax | Syntax-Regeln | |
Daten-Typen | Definiert die grundlegenden Datentypen (Data types) | |
Objekt-Typen | Definiert die EAGLE-Objekte (Objects) | |
Definitionen | Zeigt, wie man eine Definition schreibt | |
Operatoren | Liste der gültigen Operatoren (Operators) | |
Ausdrücke | Zeigt, wie man einen Ausdruck (Expression) schreibt | |
Statements | Definiert die gültigen Statements | |
Builtins | Liste der Builtin-Constants, -Functions etc. | |
Dialoge | zeigt wie man grafische Dialoge in ein ULP integriert |
Ein User-Language-Programm besteht aus zwei wesentlichen Bestandteilen: Definitionen und Statements.
Definitionen werden verwendet, um Konstanten, Variablen und Funktionen zu definieren, die wiederum in Statements verwendet werden.
Ein einfaches ULP könnte so aussehen:
#usage "Add the characters in the word 'Hello'\n" "Usage: RUN sample.ulp" // Definitions: string hello = "Hello"; int count(string s) { int c = 0; for (int i = 0; s[i]; ++i) c += s[i]; return c; } // Statements: output("sample") { printf("Count is: %d\n", count(hello)); }Der Wert der #usage-Directive zeigt im Control Panel die Beschreibung des Programms an.
Soll das Ergebnis des ULPs ein Befehl sein, der im Editor-Fenster ausgeführt
werden soll, kann man die Funktion exit()
verwenden um den Befehl an das Editor-Fenster zu schicken.
ULP ausführen
User-Language-Programme werden mit Hilfe des
RUN-Befehls von der Kommandozeile eines
Editor-Fensters aus ausgeführt.
Ein ULP kann die Information zurückgeben, ob es erfolgreich abgeschlossen wurde oder nicht. Sie können die exit()-Funktion verwenden, um das Programm zu beenden und den Rückgabewert (return value) zu setzen.
Ein "return value" von 0 bedeutet, das ULP wurde normal beendet (erfolgreich), während jeder andere Wert einen unnormalen Programmabbruch anzeigt.
Der Default-Rückgabewert jedes ULP ist 0.
Wird der RUN-Befehl als Teil einer Script-Datei, ausgeführt, dann wird die Script-Datei abgebrochen, wenn das ULP mit einem "return value" ungleich 0 beendet wurde.
Eine spezielle Variante der Funktion exit() kann
verwendet werden, um einen Befehl als Ergebnis des ULPs an ein Editor-Fenster zu schicken.
Leerzeichen (blanks), Tabulatoren, Newline-Zeichen und
Kommentar werden als Whitespace
behandelt und nicht berücksichtigt.
Die einzige Stelle, an der ASCII-Zeichen, die Whitespace
repräsentieren, berücksichtigt werden, ist innerhalb von
Literal Strings,
wie in
Wenn dem abschließenden Newline-Zeichen einer Zeile ein Backslash
(\), vorausgeht, werden Backslash und Newline nicht berücksichtigt.
Es gibt zwei Möglichkeiten, Kommentare einzufügen. Die erste verwendet
die Syntax
Die zweite Möglichkeit, einen Kommentar einzufügen, verwendet die Syntax
Die maximale "include-Tiefe" ist 10.
Jede #include-Direktive wird nur einmal ausgeführt. So wird
sichergestellt, dass keine Mehrfachdefinitionen von Variablen oder Funktionen entstehen,
die Fehler verursachen könnten.
Syntax
Die Grundbausteine eines User-Language-Programms sind:
Alle unterliegen bestimmten Regeln, die in den entsprechenden Abschnitten
beschrieben werden.
Whitespace
Bevor ein User-Language-Programm ausgeführt werden kann, muss es von einer
Datei eingelesen werden. Während dieses Vorgangs wird er Inhalt der Datei
zerlegt (parsed) in Tokens und in Whitespace.
string s = "Hello World";
wo das Leerzeichen zwischen 'o' und 'W' ein Teil des Strings bleibt.
"Hello \
World"
wird als "Hello World" interpretiert.
Kommentare
Wenn man ein ULP schreibt, sollte man möglichst erklärenden Text
hinzufügen, der einen Eindruck davon vermittelt, was dieses Programm
tut. Sie können auch Ihren Namen und, falls verfügbar, Ihre Email-Adresse
hinzufügen, damit die Anwender Ihres Programms die Möglichkeit haben,
mit Ihnen Kontakt aufzunehmen, wenn Sie Probleme oder
Verbesserungsvorschläge haben.
/* some comment text */
bei der alle Zeichen zwischen (und einschließlich) den Zeichen
/* und */ als Kommentar interpretiert wird.
Solche Kommentare können über mehrere Zeilen gehen, wie in
/* This is a
multi line comment
*/
aber sie lassen sich nicht verschachteln. Das erste */ das einem /*
folgt, beendet den Kommentar.
int i; // some comment text
Dabei werden alle Zeichen nach (und einschließlich) dem //
bis zum Newline-Zeichen (aber nicht einschließlich) am Ende der Zeile
als Kommentar interpretiert.
Direktiven
Folgende Direktiven sind verfügbar:
#include
#require
#usage
#include
Ein ULP kann Befehle aus einem anderen ULP durch die #include-Direktive
ausführen. Die Syntax lautet
#include "filename"
Die Datei filename wird zuerst im selben Verzeichnis in dem sich auch die
Source-Datei (das ist die Datei mit der #include-Directive) befindet, gesucht.
Wird sie dort nicht gefunden, wird in den angegebenen ULP-Verzeichnissen gesucht.
Hinweis zur Kompatibilität zwischen den Betriebssystemen
Enthält filename eine Pfadangabe, ist es das Beste als Trennzeichen immer den Forward-Slash (/)zu verwenden (auch unter Windows!). Laufwerksbuchstaben unter Windows sollten vermieden werden. Wird das berücksichtigt, läuft das ULP unter allen Betriebssystemen. |
#require versionDie version muss als Real-Konstante der Form
V.RRrrangegeben werden, wobei V die Versionsnummer ist, RR die Release-Nummer und rr die (optionale) Revisions-Nummer (beide mit führenden Nullen aufgefüllt, falls sie kleiner als 10 sind). Falls also zum Beispiel ein ULP mindestens die EAGLE-Version 4.11r06 voraussetzt (welches die Betaversion war die als erste die #require-Direktive implementierte), könnte es
#require 4.1106benutzen. Entsprechend würde für Version 5.1.2
#require 5.0102gelten.
#usage text [, text...]ist die übliche Methode diese Information verfügbar zu machen.
Wird die #usage-Direktive verwendet, wird ihr Text (der eine String-Konstante sein muss) im Control Panel verwendet, um die Beschreibung des Programms anzuzeigen.
Für den Fall, dass das ULP diese Information z. B. in einer dlgMessageBox() benötigt, ist dieser Text durch die Builtin-Konstante usage im ULP verfügbar.
Es wird nur die #usage-Direktive des Hauptprogramms (das ist die Datei, die mit dem RUN-Befehl gestartet wurde) berücksichtigt. Deshalb sollten reine include-Dateien auch eine eigene #usage-Directive enthalten.
Am besten ist die #usage-Direktive an den Anfang der Datei zu stellen, so muss das Control Panel nicht den ganzen Text der Datei durchsuchen, um die Informationen, die angezeigt werden sollen, zu finden.
Soll die Usage-Information in mehreren Sprachen verfügbar gemacht werden, so sind die Texte der verschiedenen Sprachen durch Kommas getrennt anzugeben. Dabei muss jeder Text mit dem zweibuchstabigen Code der jeweiligen Sprache (so wie er auch von der language()-Funktion geliefert wird), gefolgt von einem Doppelpunkt und beliebig vielen Leerzeichen beginnen. Falls für die auf dem aktuellen System verwendete Sprache kein passender Text gefunden wird, so wird der erste angegebene Text verwendet (dieser sollte generell Englisch sein um das Programm einer möglichst großen Zahl von Benutzern zugänglich zu machen).
#usage "en: A sample ULP\n" "Implements an example that shows how to use the EAGLE User Language\n" "Usage: RUN sample.ulp\n" "Author: john@home.org", "de: Beispiel eines ULPs\n" "Implementiert ein Beispiel das zeigt, wie man die EAGLE User Language benutzt\n" "Aufruf: RUN sample.ulp\n" "Autor: john@home.org"
break case char continue default do else enum for if int numeric real return string switch void whileZusätzlich sind die Namen von Builtins und Objekt-Typen reserviert und dürfen nicht als Identifier-Namen verwendet werden.
Identifier bestehen aus einer Sequenz von Buchstaben (a b c..., A B C...), Ziffern (1 2 3...) und Unterstreichungszeichen (_). Das erste Zeichen eines Identifiers muss ein Buchstabe oder ein Unterstreichungszeichen sein.
Identifier sind case-sensitive, das bedeutet, dass
int Number, number;zwei unterschiedliche Integer-Variablen definieren würde.
Die maximale Länge eines Identifiers ist 100 Zeichen, von denen alle signifikant sind.
Konstanten
Konstanten sind gleichbleibende Daten, die in ein User-Language-Programm
geschrieben werden. Analog zu den verschiedenen
Datentypen
gibt es auch unterschiedliche Typen von Konstanten.
'a' '=' '\n'Der Typ der Character-Konstante ist char.
erstes | zweites | Konstante interpretiert als | ||
0 | 1-7 | oktal (Basis 8) | ||
0 | x,X | hexadezimal (Basis 16) | ||
1-9 | dezimal (Basis 10) |
Der Typ einer Integer-Konstante ist int.
16 | dezimal | |
020 | oktal | |
0x10 | hexadezimal |
[-]int.frac[e|E[±]exp]wobei die einzelnen Teile für
Sie können entweder Dezimal-Integer-Zahl oder Dezimalbruch weglassen (aber nicht beides). Sie können entweder den Dezimalpunkt oder den Buchstaben e oder E und den Integer-Exponenten mit Vorzeichen weglassen (aber nicht beides).
Der Typ einer Real-Konstante ist real.
Konstante | Wert | |
23.45e6 | 23.45 x 10^6 | |
.0 | 0.0 | |
0. | 0.0 | |
1. | 1.0 | |
-1.23 | -1.23 | |
2e-5 | 2.0 x 10^-5 | |
3E+10 | 3.0 x 10^10 | |
.09E34 | 0.09 x 10^34 |
"Hello world\n"Der Typ einer String-Konstante ist string.
String-Konstanten können jede beliebige Länge haben, vorausgesetzt es steht genügend Speicher zur Verfügung.
String-Konstanten können mit dem einfach aneinandergereiht werden um längere Strings zu bilden:
string s = "Hello" " world\n";Es ist auch möglich, eine String-Konstante über mehrere Zeilen zu schreiben, indem man das Newline-Zeichen mit Hilfe des Backslash (\) "ausblendet":
string s = "Hello \ world\n";
Sequenz | Bedeutung | |
\a | audible bell | |
\b | backspace | |
\f | form feed | |
\n | new line | |
\r | carriage return | |
\t | horizontal tab | |
\v | vertical tab | |
\\ | backslash | |
\' | single quote | |
\" | double quote | |
\O | O = bis 3 octal digits | |
\xH | H = bis 2 hex digits |
Jedes Zeichen nach dem Backslash, das nicht in der Liste aufgeführt ist, wird als dieses Zeichen (ohne Backslash) behandelt.
Escape-Sequenzen können in Character-Konstanten und String-Konstanten verwendet werden.
'\n' "A tab\tinside a text\n" "Ring the bell\a\n"
[] | Eckige Klammern (Brackets) | |
() | Runde Klammern (Parentheses) | |
{} | Geschweifte Klammern (Braces) | |
, | Komma | |
; | Semikolon | |
: | Doppelpunkt (Colon) | |
= | Gleichheitszeichen |
Andere Sonderzeichen werden als
Operatoren
verwendet.
Eckige Klammern
Eckige Klammern (Brackets) werden verwendet in Array-Definitionen:
int ai[];
in Array-Subscripts
n = ai[2];
und in String-Subscripts, um auf die einzelnen Zeichen eines Strings
zuzugreifen
string s = "Hello world";
char c = s[2];
Runde Klammern
Runde Klammern (Parentheses) gruppieren
Ausdrücke
(ändern eventuell die Priorität der Operatoren),
isolieren bedingte Ausdrücke und bezeichnen
Funktionsaufrufe und Funktionsparameter:
d = c * (a + b); if (d == z) ++x; func(); void func2(int n) { ... }
if (d == z) { ++x; func(); }und werden auch verwendet, um die Werte für die Array-Initialisierung zu gruppieren:
int ai[] = { 1, 2, 3 };
int func(int n, real r, string s) { ... } int i = func(1, 3.14, "abc");Es trennt auch die Wertangaben bei der Array-Initialisierung:
int ai[] = { 1, 2, 3 };und es begrenzt die Elemente einer Variablen-Definition:
int i, j, k;
i = a + b;und er begrenzt die Init-, Test- und Inkrement-Ausdrücke eines for Statements:
for (int n = 0; n < 3; ++n) { func(n); }
switch (c) { case 'a': printf("It was an 'a'\n"); break; case 'b': printf("It was a 'b'\n"); break; default: printf("none of them\n"); }
int i = 10; char c[] = { 'a', 'b', 'c' };Es wird auch als Zuweisungsoperator verwendet.
Die vier grundlegenden Datentypen sind
char | für Einzelzeichen | |
int | für Ganzzahlen | |
real | für Gleitkommazahlen | |
string | für Textinformation |
Neben diesen grundlegenden Datentypen gibt es auch High-level-Objekt-Typen, die die Datenstrukturen repräsentieren, wie sie in den EAGLE-Dateien gespeichert sind.
Der Datentyp void wird nur als Return-Typ einer
Funktion verwendet. Er zeigt
an, dass diese Funktion keinen Wert zurückgibt.
Eine Variable des Typs char belegt 8 bit (1 Byte), und kann jeden Wert
im Bereich 0..255 speichern.
Siehe auch Operatoren,
Character-Konstanten
Eine Variable vom Typ int belegt 32 bit (4 Byte), und kann
jeden Wert im Bereich -2147483648..2147483647 speichern.
Siehe auch Integer-Konstanten
Eine Variable vom Typ real belegt 64 bit (8 Byte), und kann jeden Wert
im Bereich ±2.2e-308..±1.7e+308 mit einer Genauigkeit von 15 Digits
speichern.
Siehe auch Real-Konstanten
Eine Variable des Typs string ist nicht auf eine bestimmte Länge beschränkt,
vorausgesetzt, es steht genügend Speicher zur Verfügung.
Variablen des Typs string sind ohne explizite Länge definiert. Sie
"wachsen" automatisch, soweit erforderlich, während der Programmausführung.
Die Elemente einer String-Variablen sind vom Typ
char, und
man kann auf sie individuell zugreifen, indem man
[index] benutzt.
Das erste Zeichen eines Strings hat den Index 0:
Siehe auch Operatoren,
Builtin-Functions,
String-Konstanten
Arithmetische Typen sind
char,
int und
real
(in dieser Reihenfolge). Ist zum Beispiel a vom Typ
int
und b vom Typ
real, dann ist das Ergebnis
a + b vom Typ
real.
Siehe auch Typecast
Die allgemeine Syntax eines Typecast ist
Wenn man mit Typecast einen Ausdruck vom Typ
real in
int umwandelt, wird der Dezimalbruch
des Wertes abgeschnitten.
Siehe auch Typ-Umwandlung
Auf die "Properties" dieser Objekte kann mit Hilfe von Members
zugegriffen werden.
Es gibt zwei Arten von Members:
Loop members werden verwendet, um auf Mehrfach-Objekte
derselben Art zuzugreifen, die in einem Objekt einer höheren Hierarchiestufe
enthalten sind:
Loop members behandeln Objekte in alpha-numerisch sortierter Reihenfolge,
falls die Objekte einen Namen haben.
Eine Loop-member-Funktion erzeugt eine Variable vom erforderlichen Typ,
um die Objekte zu speichern. Sie dürfen jeden gültigen Namen für eine
derartige Variable verwenden, so dass das obige Beispiel auch so lauten könnte:
Objekt-Hierarchie einer Bibliothek:
char
Der Datentyp char speichert Einzelzeichen, wie die Buchstaben des
Alphabets oder kleine Zahlen ohne Vorzeichen.
int
Der Datentyp int speichert Ganzzahlen mit Vorzeichen, wie die Koordinaten
eines Objekts.
real
Der Datentyp real speichert Gleitkommazahlen mit Vorzeichen, z.B.
den Rasterabstand.
string
Der Datentyp string speichert Textinformation, z.B. den Namen eines Bauteils
oder eines Netzes.
string s = "Layout";
printf("Third char is: %c\n", s[2]);
Hier würde das Zeichen 'y' ausgedruckt.
Beachten Sie, dass s[2] das dritte Zeichen des Strings
s liefert!
Implementierungs-Details
Der Datentyp string ist implementiert wie von C her bekannte
"Zero-terminated-Strings", (also mit char[]).
Betrachtet man die folgende Variablen-Definition
string s = "abcde";
dann ist s[4] das Zeichen 'e', und s[5] ist das Zeichen
'\0', oder der Integer-Wert 0x00.
Diese Tatsache kann dazu ausgenutzt werden, das Ende eines Strings
ohne die Funktion strlen() festzustellen, wie
in
for (int i = 0; s[i]; ++i) {
// do something with s[i]
}
Es ist auch völlig in Ordnung, einen String "abzuschneiden", indem man
den Wert "0" an der gewünschten Stelle einfügt:
string s = "abcde";
s[3] = 0;
Als Ergebnis erhält man für den String s den Wert "abc".
Beachten Sie bitte, dass alles, was auf den Wert "0" folgt, wirklich
verschwunden ist, und auch nicht mehr zurückgeholt werden kann, indem
der ursprüngliche Wert wieder eingesetzt wird. Das gleiche gilt auch
für jede andere Operation, bei der ein Zeichen zu 0 wird, wie etwa --s[3].
Typ-Umwandlung
Der Typ des Ergebnisses eines arithmetischen
Ausdrucks, wie z.B. a + b,
wobei a und b unterschiedliche arithmetische Typen sind,
ist gleich dem "größeren" der beiden Operanden-Typen.
Typecast
Der Ergebnis-Typ eines arithmetischen
Ausdrucks
kann explizit in einen anderen arithmetischen Typ umgewandelt werden,
indem man einen
Typecast darauf anwendet.
type(expression)
wobei type
char,
int oder
real ist und
expression jeder arithmetische
Ausdruck sein kann.
Objekt-Typen
Die EAGLE-Datenstruktur ist in drei Binärdatei-Typen gespeichert:
Diese Dateien enthalten Objekte, die hierarchisch gegliedert sind.
In einem User-Language-Programm kann man auf die Hierarchiestufen mit
Hilfe der entsprechenden Builtin-Zugriffs-Statements zugreifen:
library(L) { ... }
schematic(S) { ... }
board(B) { ... }
Diese Zugriffs-Statements schaffen einen Kontext, innerhalb dessen Sie
auf alle Objekte in Bibliotheken, Schaltplänen oder Platinen zugreifen können.
Data members liefern die Objektdaten unmittelbar.
Zum Beispiel in
board(B) {
printf("%s\n", B.name);
}
liefert Data member name des Board-Objekts B
den Board-Namen.
Data members können auch andere Objekte zurückgeben, wie in
board(B) {
printf("%f\n", B.grid.size);
}
wo Data member grid des Boards ein Grid-Objekt zurückliefert,
dessen Data member size dann Grid-Size (Rastergröße) zurückgibt.
board(B) {
B.elements(E) {
printf("%-8s %-8s\n", E.name, E.value);
}
}
Dieses Beispiel verwendet Loop member elements() des Boards,
um eine Schleife durch alle Board-Elemente zu realisieren. Der Block nach
dem B.elements(E)-Statement wird der Reihe nach für jedes Element
ausgeführt, und das gegenwärtige Element kann innerhalb des Blocks unter
dem Namen E angesprochen werden.
board(MyBoard) {
MyBoard.elements(TheCurrentElement) {
printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
}
}
Das Ergebnis wäre identisch mit dem vorhergehenden Beispiel. Der Gültigkeitsbereich
einer Variablen, die von einer Loop-member-Funktion angelegt wird, ist
auf das Statement oder den Block unmittelbar nach dem Loop-Funktionsaufruf
beschränkt.
LIBRARY
GRID
LAYER
DEVICESET
DEVICE
GATE
PACKAGE
CONTACT
PAD
SMD
CIRCLE
HOLE
RECTANGLE
FRAME
TEXT
WIRE
POLYGON
WIRE
SYMBOL
PIN
CIRCLE
RECTANGLE
FRAME
TEXT
WIRE
POLYGON
WIRE
Objekt-Hierarchie eines Schaltplans:
SCHEMATIC
GRID
LAYER
LIBRARY
SHEET
CIRCLE
RECTANGLE
FRAME
TEXT
WIRE
POLYGON
WIRE
PART
INSTANCE
ATTRIBUTE
BUS
SEGMENT
LABEL
TEXT
WIRE
WIRE
NET
SEGMENT
JUNCTION
PINREF
TEXT
WIRE
Objekt-Hierarchie einer Platine:
BOARD
GRID
LAYER
LIBRARY
CIRCLE
HOLE
RECTANGLE
FRAME
TEXT
WIRE
POLYGON
WIRE
ELEMENT
ATTRIBUTE
SIGNAL
CONTACTREF
POLYGON
WIRE
VIA
WIRE
UL_ARC
Siehe auch UL_WIRE
Konstanten
CAP_FLAT | flache Kreisbogen-Enden | |
CAP_ROUND | runde Kreisbogen-Enden |
board(B) { B.wires(W) { if (W.arc) printf("Arc: (%d %d), (%d %d), (%d %d)\n", W.arc.x1, W.arc.y1, W.arc.x2, W.arc.y2, W.arc.xc, W.arc.yc); } }
UL_AREA ist ein Pseudo-Objekt, das Informationen über die Fläche liefert, die ein Objekt einnimmt. Für UL_DEVICE, UL_PACKAGE und UL_SYMBOL ist die Fläche definiert als umschließendes Rechteck der Objekt-Definition in der Bibliothek. Deshalb geht der Offset in einem Board nicht in die Fläche ein, obwohl UL_PACKAGE von UL_ELEMENT abgeleitet wird.
board(B) { printf("Area: (%d %d), (%d %d)\n", B.area.x1, B.area.y1, B.area.x2, B.area.y2); }
constant | int (0=variabel, d.h. überschreiben erlaubt, 1=konstant - siehe Anmerkung) | |
defaultvalue | string (siehe Anmerkung) | |
display | int (ATTRIBUTE_DISPLAY_FLAG_...) | |
name | string | |
text | UL_TEXT (siehe Anmerkung) | |
value | string |
ATTRIBUTE_DISPLAY_FLAG_OFF | keine Anzeige | |
ATTRIBUTE_DISPLAY_FLAG_VALUE | Wert wird angezeigt | |
ATTRIBUTE_DISPLAY_FLAG_NAME | Name wird angezeigt |
Ein UL_ATTRIBUTE kann dazu benutzt werden, die Attribute anzusprechen, die für ein Device in der Bibliothek definiert wurden, bzw. einem Bauteil im Schaltplan oder Board zugewiesen wurden.
In einem UL_ELEMENT-Kontext liefert constant nur bei aktiver F/B-Annotation einen tatsächlichen Wert, ansonsten wird 0 geliefert.
Das defaultvalue-Member liefert den Wert, wie er in der Bibliothek definiert wurde (falls sich dieser vom tatsächlichen Wert unterscheidet, ansonsten ist es der selbe Wert wie bei value). In einem UL_ELEMENT-Kontext liefert defaultvalue nur bei aktiver F/B-Annotation einen tatsächlichen Wert, ansonsten wird ein leerer String geliefert.
Das text-Member ist nur in einem UL_INSTANCE- oder UL_ELEMENT-Kontext verfügbar und liefert ein UL_TEXT-Objekt welches alle Text-Parameter enthält. Der Wert dieses Text-Objekts ist der Text wie er gemäß dem 'display'-Parameter des UL_ATTRIBUTE angezeigt wird. Wird diese Funktion aus einem anderen Kontext heraus aufgerufen, so sind die Werte des zurückgegebenen UL_TEXT-Objekts undefiniert.
Bei globalen Attributen sind nur name und value definiert.
schematic(SCH) { SCH.parts(P) { P.attributes(A) { printf("%s = %s\n", A.name, A.value); } } } schematic(SCH) { SCH.attributes(A) { // global attributes printf("%s = %s\n", A.name, A.value); } }
area | UL_AREA | |
grid | UL_GRID | |
name | string (siehe Anmerkung) |
attributes() | UL_ATTRIBUTE (siehe Anmerkung) | |
circles() | UL_CIRCLE | |
classes() | UL_CLASS | |
elements() | UL_ELEMENT | |
frames() | UL_FRAME | |
holes() | UL_HOLE | |
layers() | UL_LAYER | |
libraries() | UL_LIBRARY | |
polygons() | UL_POLYGON | |
rectangles() | UL_RECTANGLE | |
signals() | UL_SIGNAL | |
texts() | UL_TEXT | |
wires() | UL_WIRE |
Das Loop member attributes() geht durch die globalen Attribute.
board(B) { B.elements(E) printf("Element: %s\n", E.name); B.signals(S) printf("Signal: %s\n", S.name); }
name | string (BUS_NAME_LENGTH) |
segments() | UL_SEGMENT |
BUS_NAME_LENGTH | max. Länge eines Busnamens (obsolet - ab Version 4 können Bus-Namen beliebig lang sein) |
schematic(SCH) { SCH.sheets(SH) { SH.busses(B) printf("Bus: %s\n", B.name); } }
board(B) { B.circles(C) { printf("Circle: (%d %d), r=%d, w=%d\n", C.x, C.y, C.radius, C.width); } }
clearance[number] | int (siehe Anmerkung) | |
drill | int | |
name | string (siehe Anmerkung) | |
number | int | |
width | int |
Wenn name einen leeren String liefert, ist die Netzklasse nicht definiert und wird somit auch nicht von einem Signal oder Netz benutzt.
board(B) { B.signals(S) { printf("%-10s %d %s\n", S.name, S.class.number, S.class.name); } }
name | string (CONTACT_NAME_LENGTH) | |
pad | UL_PAD | |
signal | string | |
smd | UL_SMD | |
x, y | int (Mittelpunkt, siehe Anmerkung) |
CONTACT_NAME_LENGTH | max. empfohlene Länge eines "Contact"-Namens (wird nur für formatierte Ausgaben benutzt) |
Die Koordinaten (x, y) des "Contacts" hängen vom Kontext ab aus dem sie aufgerufen werden:
library(L) { L.packages(PAC) { PAC.contacts(C) { printf("Contact: '%s', (%d %d)\n", C.name, C.x, C.y); } } }
contact | UL_CONTACT | |
element | UL_ELEMENT |
board(B) { B.signals(S) { printf("Signal '%s'\n", S.name); S.contactrefs(C) { printf("\t%s, %s\n", C.element.name, C.contact.name); } } }
area | UL_AREA | |
description | string | |
headline | string | |
library | string | |
name | string (DEVICE_NAME_LENGTH) | |
package | UL_PACKAGE (siehe Anmerkung) | |
prefix | string (DEVICE_PREFIX_LENGTH) | |
technologies | string (siehe Anmerkung) | |
value | string ("On" oder "Off") |
attributes() | UL_ATTRIBUTE (siehe Anmerkung) | |
gates() | UL_GATE |
DEVICE_NAME_LENGTH | max. empfohlene Länge eines Device-Namens (wird nur für formatierte Ausgaben benutzt) | |
DEVICE_PREFIX_LENGTH | max. empfohlene Länge eines Device-Präfix (wird nur für formatierte Ausgaben benutzt) |
Alle UL_DEVICE-Member, mit Ausnahme von name und technologies, liefern dieselben Werte wie die zugehörigen UL_DEVICESET-Member in dem UL_DEVICE definiert wurde. Das name-Member liefert den Namen der Package-Variante, für welche dieses Device mit dem PACKAGE-Befehl erzeugt worden ist. Bitte denken Sie daran: Der description-Text darf Newline-Zeichen ('\n') enthalten.
Der Wert des technologies-Member hängt vom Kontext ab aus dem es aufgerufen wurde:
Das Loop member attributes() erwartet einen zusätzlichen Parameter der angibt, für welche Technology die Attribute geliefert werden sollen (siehe das zweite Beispiel).
library(L) { L.devicesets(S) { S.devices(D) { if (D.package) printf("Device: %s, Package: %s\n", D.name, D.package.name); D.gates(G) { printf("\t%s\n", G.name); } } } }
library(L) { L.devicesets(DS) { DS.devices(D) { string t[]; int n = strsplit(t, D.technologies, ' '); for (int i = 0; i < n; i++) { D.attributes(A, t[i]) { printf("%s = %s\n", A.name, A.value); } } } } }
area | UL_AREA | |
description | string | |
headline | string (siehe Anmerkung) | |
library | string | |
name | string (DEVICE_NAME_LENGTH) | |
prefix | string (DEVICE_PREFIX_LENGTH) | |
value | string ("On" oder "Off") |
devices() | UL_DEVICE | |
gates() | UL_GATE |
DEVICE_NAME_LENGTH | max. empfohlene Länge des Device-Namen (wird nur bei formatierten Ausgaben benutzt) | |
DEVICE_PREFIX_LENGTH | max. empfohlene Länge des Prefix (wird nur bei formatierten Ausgaben benutzt) |
library(L) { L.devicesets(D) { printf("Device set: %s, Description: %s\n", D.name, D.description); D.gates(G) { printf("\t%s\n", G.name); } } }
angle | real (0.0...359.9) | |
attribute[] | string (siehe Anmerkung) | |
column | string (siehe Anmerkung) | |
locked | int | |
mirror | int | |
name | string (ELEMENT_NAME_LENGTH) | |
package | UL_PACKAGE | |
row | string (siehe Anmerkung) | |
smashed | int (siehe Anmerkung) | |
spin | int | |
value | string (ELEMENT_VALUE_LENGTH) | |
x, y | int (Ursprung, Aufhängepunkt) |
attributes() | UL_ATTRIBUTE | |
texts() | UL_TEXT (siehe Anmerkung) |
ELEMENT_NAME_LENGTH | max. empfohlene Länge eines Element-Namens (wird nur für formatierte Ausgaben benutzt) | |
ELEMENT_VALUE_LENGTH | max. empfohlene Länge eines Element-Values (wird nur für formatierte Ausgaben benutzt) |
Das texts()-Member läuft nur durch die mittels SMASH vom Element losgelösten Texte und durch die sichtbaren Texte der Attribute, die diesem Element zugewiesen wurden. Um alle Texte eines Elements zu bearbeiten (zum Beispiel um es zu zeichnen), müssen Sie eine Schleife durch das texts()-Member des Elements selbst und durch das texts()-Member des zum Element gehörenden Package bilden.
angle gibt an um wieviel Grad das Element gegen den Uhrzeigersinn um seinen Aufhängepunkt gedreht ist.
Die column()- und row()-Members liefern die Spalten- bzw. Zeilenposition innerhalb des Rahmens in der Board-Zeichnung. Falls es in der Zaichnung keinen Rahmen gibt, oder das Element außerhalb des Rahmens liegt, wird ein '?' (Fragezeichen) zurückgegeben.
Das smashed-Member gibt Auskunft darüber, ob ein Element gesmasht ist. Diese Funktion kann auch verwendet werden um herauszufinden, ob es einen losgelösten Platzhaltertext gibt, indem der Name des Platzhalters in eckigen Klammern angegeben wird, wie in smashed["VALUE"]. Dies ist nützlich falls Sie einen solchen Text mit dem MOVE-Befehl etwa durch MOVE R5>VALUE selektieren wollen. Gültige Platzhalternamen sind "NAME" und "VALUE", sowie die Namen etwaiger benutzerdefinierter Attribute. Groß-/Kleinschreibung spielt keine Rolle, und sie dürfen ein vorangestelltes '>' Zeichen haben.
board(B) { B.elements(E) { printf("Element: %s, (%d %d), Package=%s\n", E.name, E.x, E.y, E.package.name); } }
board(B) { B.elements(E) { if (E.attribute["REMARK"]) printf("%s: %s\n", E.name, E.attribute("REMARK")); } }
columns | int (-127...127) | |
rows | int (-26...26) | |
border | int (FRAME_BORDER_...) | |
layer | int | |
x1, y1 | int (lower left corner) | |
x2, y2 | int (upper right corner) |
texts() | UL_TEXT | |
wires() | UL_WIRE |
FRAME_BORDER_BOTTOM | unterer Rand wird dargestellt | |
FRAME_BORDER_RIGHT | rechter Rand wird dargestellt | |
FRAME_BORDER_TOP | oberer Rand wird dargestellt | |
FRAME_BORDER_LEFT | linker Rand wird dargestellt |
Die Loop-Members texts() und wires() gehen durch alle Texte und Linien, aus denen der Frame besteht.
board(B) { B.frames(F) { printf("Frame: (%d %d), (%d %d)\n", F.x1, F.y1, F.x2, F.y2); } }
addlevel | int (GATE_ADDLEVEL_...) | |
name | string (GATE_NAME_LENGTH) | |
swaplevel | int | |
symbol | UL_SYMBOL | |
x, y | int (Aufhängepunkt, siehe Anmerkung) |
GATE_ADDLEVEL_MUST | must | |
GATE_ADDLEVEL_CAN | can | |
GATE_ADDLEVEL_NEXT | next | |
GATE_ADDLEVEL_REQUEST | request | |
GATE_ADDLEVEL_ALWAYS | always |
GATE_NAME_LENGTH | max. empfohlene Länge eines Gate-Namens (wird nur für formatierte Ausgaben benutzt) |
library(L) { L.devices(D) { printf("Device: %s, Package: %s\n", D.name, D.package.name); D.gates(G) { printf("\t%s, swaplevel=%d, symbol=%s\n", G.name, G.swaplevel, G.symbol.name); } } }
distance | real | |
dots | int (0=lines, 1=dots) | |
multiple | int | |
on | int (0=off, 1=on) | |
unit | int (GRID_UNIT_...) | |
unitdist | int (GRID_UNIT_...) |
GRID_UNIT_MIC | Micron | |
GRID_UNIT_MM | Millimeter | |
GRID_UNIT_MIL | Mil | |
GRID_UNIT_INCH | Inch |
board(B) { printf("Gridsize=%f\n", B.grid.distance); }
drillsymbol liefert die Nummer des Bohrsymbols, welches diesem Bohrdurchmesser zugeordnet worden ist (siehe die Liste der definierten Bohrsymbole im Handbuch). Ein Wert von 0 bedeutet, dass diesem Bohrdurchmesser kein Bohrsymbol zugeordnet ist.
board(B) { B.holes(H) { printf("Hole: (%d %d), drill=%d\n", H.x, H.y, H.drill); } }
angle | real (0, 90, 180 und 270) | |
column | string (siehe Anmerkung) | |
gate | UL_GATE | |
mirror | int | |
name | string (INSTANCE_NAME_LENGTH) | |
row | string (siehe Anmerkung) | |
sheet | int (0=unbenutzt, >0=Seitennummer) | |
smashed | int (siehe Anmerkung) | |
value | string (PART_VALUE_LENGTH) | |
x, y | int (Aufhängepunkt) |
attributes() | UL_ATTRIBUTE (siehe Anmerkung) | |
texts() | UL_TEXT (siehe Anmerkung) | |
xrefs() | UL_GATE (siehe Anmerkung) |
INSTANCE_NAME_LENGTH | max. empfohlene Länge eines Instance-Namen (wird nur für formatierte Ausgaben benutzt) | |
PART_VALUE_LENGTH | max. empfohlene Länge eines Bauteil-Values (Instances haben keinen eigenen Value!) |
Das texts()-Member läuft nur durch die mittels SMASH von der Instance losgelösten Texte, und durch die sichtbaren Texte der Attribute, die dieser Instance zugewiesen wurden. Um alle Texte einer Instance zu bearbeiten, müssen Sie eine Schleife durch das texts()-Member der Instance selbst und durch das texts()-Member des zu dem Gate der Instance gehörenden Symbols bilden. Wurden einer Instance Attribute zugewiesen, so liefert texts() deren Texte so, wie sie momentan dargestellt werden.
Die column()- und row()-Members liefern die Spalten- bzw. Zeilenposition innerhalb des Rahmens auf der Schaltplanseite, auf der diese Instance platziert ist. Falls es auf dieser Seite keinen Rahmen gibt, oder die Instance außerhalb des Rahmens liegt, wird ein '?' (Fragezeichen) zurückgegeben. Diese Members können nur in einem UL_SHEET-Kontext verwendet werden.
Das smashed-Member gibt Auskunft darüber, ob eine Instance gesmasht ist. Diese Funktion kann auch verwendet werden um herauszufinden, ob es einen losgelösten Platzhaltertext gibt, indem der Name des Platzhalters in eckigen Klammern angegeben wird, wie in smashed["VALUE"]. Dies ist nützlich falls Sie einen solchen Text mit dem MOVE-Befehl etwa durch MOVE R5>VALUE selektieren wollen. Gültige Platzhalternamen sind "NAME", "VALUE", "Part" und "GATE", sowie die Namen etwaiger benutzerdefinierter Attribute. Groß-/Kleinschreibung spielt keine Rolle, und sie dürfen ein vorangestelltes '>' Zeichen haben.
Das xrefs()-Member läuft durch die Gatter des Kontaktspiegels dieser Instance. Diese sind nur dann von Bedeutung, wenn das ULP eine zeichnerische Darstellung des Schaltplans erzeugt (wie etwa eine DXF-Datei).
schematic(S) { S.parts(P) { printf("Part: %s\n", P.name); P.instances(I) { if (I.sheet != 0) printf("\t%s used on sheet %d\n", I.name, I.sheet); } } }
schematic(SCH) { SCH.sheets(SH) { SH.nets(N) { N.segments(SEG) { SEG.junctions(J) { printf("Junction: (%d %d)\n", J.x, J.y); } } } } }
angle | real (0.0...359.9) | |
layer | int | |
mirror | int | |
spin | int | |
text | UL_TEXT | |
x, y | int (Aufhängepunkt) | |
xref | int (0=normal, 1=Querverweis) |
wires() | UL_WIRE (siehe Anmerkung) |
Die angle, layer, mirror und spin Members liefern immer den selben Wert wie diejenigen des UL_TEXT-Objekts, das vom text Member geliefert wird. Die x und y Members des Textes liefern etwas versetzte Werte für Querverweis-Labels xref ungleich 0), ansonsten liefern sie die gleichen Werte wie das UL_LABEL.
xref hat nur für Netz-Labels eine Bedeutung. Für Bus-Labels liefert es immer 0.
sheet(SH) { SH.nets(N) { N.segments(S) { S.labels(L) { printf("Label: %d %d '%s'", L.x, L.y, L.text.value); } } } }
color | int | |
fill | int | |
name | string (LAYER_NAME_LENGTH) | |
number | int | |
used | int (0=unbenutzt, 1=benutzt) | |
visible | int (0=off, 1=on) |
LAYER_NAME_LENGTH | max. empfohlene Länge eines Layer-Namens (wird nur für formatierte Ausgaben benutzt) | |
LAYER_TOP | Layer-Nummern | |
LAYER_BOTTOM | ||
LAYER_PADS | ||
LAYER_VIAS | ||
LAYER_UNROUTED | ||
LAYER_DIMENSION | ||
LAYER_TPLACE | ||
LAYER_BPLACE | ||
LAYER_TORIGINS | ||
LAYER_BORIGINS | ||
LAYER_TNAMES | ||
LAYER_BNAMES | ||
LAYER_TVALUES | ||
LAYER_BVALUES | ||
LAYER_TSTOP | ||
LAYER_BSTOP | ||
LAYER_TCREAM | ||
LAYER_BCREAM | ||
LAYER_TFINISH | ||
LAYER_BFINISH | ||
LAYER_TGLUE | ||
LAYER_BGLUE | ||
LAYER_TTEST | ||
LAYER_BTEST | ||
LAYER_TKEEPOUT | ||
LAYER_BKEEPOUT | ||
LAYER_TRESTRICT | ||
LAYER_BRESTRICT | ||
LAYER_VRESTRICT | ||
LAYER_DRILLS | ||
LAYER_HOLES | ||
LAYER_MILLING | ||
LAYER_MEASURES | ||
LAYER_DOCUMENT | ||
LAYER_REFERENCE | ||
LAYER_TDOCU | ||
LAYER_BDOCU | ||
LAYER_NETS | ||
LAYER_BUSSES | ||
LAYER_PINS | ||
LAYER_SYMBOLS | ||
LAYER_NAMES | ||
LAYER_VALUES | ||
LAYER_INFO | ||
LAYER_GUIDE | ||
LAYER_USER | niedrigste Nummer für benutzerdefinierte Layer (100) |
board(B) { B.layers(L) printf("Layer %3d %s\n", L.number, L.name); }
description | string (siehe Anmerkung) | |
grid | UL_GRID | |
headline | string | |
name | string (LIBRARY_NAME_LENGTH, siehe Anmerkung) |
devices() | UL_DEVICE | |
devicesets() | UL_DEVICESET | |
layers() | UL_LAYER | |
packages() | UL_PACKAGE | |
symbols() | UL_SYMBOL |
LIBRARY_NAME_LENGTH | max. empfohlene Länge eines Bibliotheksnamens (wird nur für formatierte Ausgaben benutzt) |
Das devices()-Member geht durch alle Package-Varianten und Technologien von UL_DEVICESET in der Bibliothek, so dass alle möglichen Device-Variationen verfügbar werden. Das devicesets()-Member geht nur durch die UL_DEVICESETs, die wiederum nach deren UL_DEVICE-Member abgefragt werden können.
Wird die Bibliothek aus einem UL_BOARD- oder UL_SCHEMATIC-Kontext heraus angesprochen, liefert name den reinen Bibliotheksnamen (ohne Extension). Ansonsten wird der volle Dateiname ausgegeben.
library(L) { L.devices(D) printf("Dev: %s\n", D.name); L.devicesets(D) printf("Dev: %s\n", D.name); L.packages(P) printf("Pac: %s\n", P.name); L.symbols(S) printf("Sym: %s\n", S.name); } schematic(S) { S.libraries(L) printf("Library: %s\n", L.name); }
class | UL_CLASS | |
column | string (see note) | |
name | string (NET_NAME_LENGTH) | |
row | string (see note) |
pinrefs() | UL_PINREF (siehe Anmerkung) | |
segments() | UL_SEGMENT (siehe Anmerkung) |
NET_NAME_LENGTH | max. empfohlene Länge eines Netznamens (wird nur für formatierte Ausgaben benutzt) |
Die column()- und row()-Members liefern die Spalten- bzw. Zeilenpositionen innerhalb des Rahmens auf der Schaltplanseite, auf der dieses Netz liegt. Da ein Netz sich über einen bestimmten Bereich erstrecken kann, liefert jede dieser Funktionen zwei durch ein Leerzeichen getrennte Werte zurück. Im Falle von column() sind die die am weitesten links bzw. rechts liegende Spalte, die von diesem Netz berührt wird, und bei row() ist es die am weitesten oben bzw. unten liegende Zeile. Falls es auf dieser Seite keinen Rahmen gibt, wird "? ?" (zwei Fragezeichen) zurückgegeben. Liegt irgend ein Punkt des Netzes außerhalb des Rahmens, so kann jeder der Werte '?' (Fragezeichen) sein. Diese Members können nur in einem UL_SHEET-Kontext verwendet werden.
schematic(S) { S.nets(N) { printf("Net: %s\n", N.name); // N.segments(SEG) will NOT work here! } } schematic(S) { S.sheets(SH) { SH.nets(N) { printf("Net: %s\n", N.name); N.segments(SEG) { SEG.wires(W) { printf("\tWire: (%d %d) (%d %d)\n", W.x1, W.y1, W.x2, W.y2); } } } } }
area | UL_AREA | |
description | string | |
headline | string | |
library | string | |
name | string (PACKAGE_NAME_LENGTH) |
circles() | UL_CIRCLE | |
contacts() | UL_CONTACT | |
frames() | UL_FRAME | |
holes() | UL_HOLE | |
polygons() | UL_POLYGON | |
rectangles() | UL_RECTANGLE | |
texts() | UL_TEXT (siehe Anmerkung) | |
wires() | UL_WIRE |
PACKAGE_NAME_LENGTH | max. empfohlene Länge eines Package-Namens (wird nur für formatierte Ausgaben benutzt) |
Stammt das UL_PACKAGE aus einem UL_ELEMENT-Kontext, so durchläuft das texts()-Member nur die nicht losgelösten Texte dieses Elements.
library(L) { L.packages(PAC) { printf("Package: %s\n", PAC.name); PAC.contacts(C) { if (C.pad) printf("\tPad: %s, (%d %d)\n", C.name, C.pad.x, C.pad.y); else if (C.smd) printf("\tSmd: %s, (%d %d)\n", C.name, C.smd.x, C.smd.y); } } } board(B) { B.elements(E) { printf("Element: %s, Package: %s\n", E.name, E.package.name); } }
angle | real (0.0...359.9) | |
diameter[layer] | int | |
drill | int | |
drillsymbol | int | |
elongation | int | |
flags | int (PAD_FLAG_...) | |
name | string (PAD_NAME_LENGTH) | |
shape[layer] | int (PAD_SHAPE_...) | |
signal | string | |
x, y | int (Mittelpunkt, siehe Anmerkung) |
PAD_FLAG_STOP | Lötstopmaske generieren | |
PAD_FLAG_THERMALS | Thermals generieren | |
PAD_FLAG_FIRST | spezielle Form für "erstes Pad" verwenden |
PAD_SHAPE_SQUARE | square | |
PAD_SHAPE_ROUND | round | |
PAD_SHAPE_OCTAGON | octagon | |
PAD_SHAPE_LONG | long | |
PAD_SHAPE_OFFSET | offset | |
PAD_SHAPE_ANNULUS | annulus (nur in Verbindung mit Supply-Layern) | |
PAD_SHAPE_THERMAL | thermal (nur in Verbindung mit Supply-Layern) |
PAD_NAME_LENGTH | max. empfohlene Länge eines Pad-Namens (identisch mit CONTACT_NAME_LENGTH) |
Durchmesser und Form des Pads hängen vom Layer ab für den es erzeugt werden soll, da diese Werte, abhängig von den Design Rules, unterschiedlich sein können. Wird als Index für das Data Member "diameter" oder "shape" einer der Layer LAYER_TOP...LAYER_BOTTOM, LAYER_TSTOP oder LAYER_BSTOP angegeben, berechnet sich der Wert nach den Vorgaben der Design Rules. Gibt man LAYER_PADS an, wird der in der Bibliothek definierte Wert verwendet.
drillsymbol liefert die Nummer des Bohrsymbols, welches diesem Bohrdurchmesser zugeordnet worden ist (siehe die Liste der definierten Bohrsymbole im Handbuch). Ein Wert von 0 bedeutet, dass diesem Bohrdurchmesser kein Bohrsymbol zugeordnet ist.
angle gibt an um wieviel Grad das Pad gegen den Uhrzeigersinn um seinen Mittelpunkt gedreht ist.
elongation ist nur für die Pad-Formen PAD_SHAPE_LONG und PAD_SHAPE_OFFSET gültig und bestimmt um wieviel Prozent die lange Seite eines solchen Pads länger ist als seine schmale Seite. Für alle anderen Pad-Formen liefert dieses Member den Wert 0.
Der Wert, den flags liefert, muss mit den PAD_FLAG_... Konstanten maskiert werden um die einzelnen Flag-Einstellungen zu ermitteln, wie zum Beispiel in
if (pad.flags & PAD_FLAG_STOP) { ... }Falls Ihr ULP lediglich die Objekte darstellen soll, brauchen Sie sich nicht explizit um diese Flags zu kümmern. Die diameter[] und shape[] Members liefern die richtigen Daten; ist zum Beispiel PAD_FLAG_STOP gesetzt, so liefert diameter[LAYER_TSTOP] den Wert 0, was zur Folge haben sollte, dass in diesem Layer nichts gezeichnet wird. Das flags Member ist hauptsächlich für ULPs gedacht, die Script-Dateien erzeugen mit denen Bibliotheksobjekte kreiert werden.
library(L) { L.packages(PAC) { PAC.contacts(C) { if (C.pad) printf("Pad: '%s', (%d %d), d=%d\n", C.name, C.pad.x, C.pad.y, C.pad.diameter[LAYER_BOTTOM]); } } }
attribute[] | string (siehe Anmerkung) | |
device | UL_DEVICE | |
deviceset | UL_DEVICESET | |
name | string (PART_NAME_LENGTH) | |
value | string (PART_VALUE_LENGTH) |
attributes() | UL_ATTRIBUTE (siehe Anmerkung) | |
instances() | UL_INSTANCE (siehe Anmerkung) |
PART_NAME_LENGTH | max. empfohlene Länge eines Part-Namens (wird nur für formatierte Ausgaben benutzt) | |
PART_VALUE_LENGTH | max. empfohlene Länge eines Part-Values (wird nur für formatierte Ausgaben benutzt) |
Beim Durchlaufen der attributes() eines UL_PART haben nur die name, value, defaultvalue und constant Members des resultierenden UL_ATTRIBUTE gültige Werte.
Wenn sich Part in einem UL_SHEET-Kontext befindet, bearbeitet Loop member instances() nur solche Instances, die tatsächlich auf dieser Seite benutzt werden. Wenn sich Part in einem UL_SCHEMATIC-Kontext befindet, geht die Schleife durch alle Instances.
schematic(S) { S.parts(P) printf("Part: %s\n", P.name); }
schematic(SCH) { SCH.parts(P) { if (P.attribute["REMARK"]) printf("%s: %s\n", P.name, P.attribute["REMARK"]); } }
angle | real (0, 90, 180 und 270) | |
contact | UL_CONTACT (siehe Anmerkung) | |
direction | int (PIN_DIRECTION_...) | |
function | int (PIN_FUNCTION_FLAG_...) | |
length | int (PIN_LENGTH_...) | |
name | string (PIN_NAME_LENGTH) | |
net | string (siehe Anmerkung) | |
swaplevel | int | |
visible | int (PIN_VISIBLE_FLAG_...) | |
x, y | int (Anschlusspunkt) |
circles() | UL_CIRCLE | |
texts() | UL_TEXT | |
wires() | UL_WIRE |
PIN_DIRECTION_NC | Not connected | |
PIN_DIRECTION_IN | Input | |
PIN_DIRECTION_OUT | Output (totem-pole) | |
PIN_DIRECTION_IO | In/Output (bidirectional) | |
PIN_DIRECTION_OC | Open Collector | |
PIN_DIRECTION_PWR | Power-Input-Pin | |
PIN_DIRECTION_PAS | Passiv | |
PIN_DIRECTION_HIZ | High-Impedance-Output | |
PIN_DIRECTION_SUP | Supply-Pin |
PIN_FUNCTION_FLAG_NONE | kein Symbol | |
PIN_FUNCTION_FLAG_DOT | Inverter-Symbol | |
PIN_FUNCTION_FLAG_CLK | Taktsymbol |
PIN_LENGTH_POINT | kein Wire | |
PIN_LENGTH_SHORT | 0.1-Inch-Wire | |
PIN_LENGTH_MIDDLE | 0.2-Inch-Wire | |
PIN_LENGTH_LONG | 0.3-Inch-Wire |
PIN_NAME_LENGTH | max. empfohlene Länge eines Pin-Namens (wird nur für formatierte Ausgaben benutzt) |
PIN_VISIBLE_FLAG_OFF | kein Name sichtbar | |
PIN_VISIBLE_FLAG_PAD | Pad-Name sichtbar | |
PIN_VISIBLE_FLAG_PIN | Pin-Name sichtbar |
Die Koordinaten (und der Layer, im Falle eines SMD) des durch das contact Data Member gelieferten Contacts hängen vom Kontext ab, in dem es aufgerufen wird:
Das net Data Member liefert den Namen des Netzes, an das der Pin angeschlossen ist (nur in einem UL_SCHEMATIC-Kontext verfügbar).
library(L) { L.symbols(S) { printf("Symbol: %s\n", S.name); S.pins(P) { printf("\tPin: %s, (%d %d)", P.name, P.x, P.y); if (P.direction == PIN_DIRECTION_IN) printf(" input"); if ((P.function & PIN_FUNCTION_FLAG_DOT) != 0) printf(" inverted"); printf("\n"); } } L.devices(D) { D.gates(G) { G.symbol.pins(P) { if (!P.contact) printf("Unconnected pin: %s/%s/%s\n", D.name, G.name, P.name); } } } }
instance | UL_INSTANCE | |
part | UL_PART | |
pin | UL_PIN |
schematic(SCH) { SCH.sheets(SH) { printf("Sheet: %d\n", SH.number); SH.nets(N) { printf("\tNet: %s\n", N.name); N.segments(SEG) { SEG.pinrefs(P) { printf("connected to: %s, %s, %s\n", P.part.name, P.instance.name, P.pin.name); } } } } }
isolate | int | |
layer | int | |
orphans | int (0=off, 1=on) | |
pour | int (POLYGON_POUR_...) | |
rank | int | |
spacing | int | |
thermals | int (0=off, 1=on) | |
width | int |
contours() | UL_WIRE (siehe Anmerkung) | |
fillings() | UL_WIRE | |
wires() | UL_WIRE |
POLYGON_POUR_SOLID | solid | |
POLYGON_POUR_HATCH | hatch |
Wird das contours() Loop-Member ohne einem zweiten Parameter aufgerufen, so läuft es durch alle Umriss-Linien, egal ob sie zu einem positiven oder negativen Polygon gehören. Falls Sie daran interessiert sind, die positiven und negativen Umriss-Linien getrennt voneienander zu erhalten, können Sie contours() mit einem zusätzlichen Integer-Parameter aufrufen (siehe zweites Beispiel unten). Das Vorzeichen dieses Parameters bestimmt, ob ein positives oder negatives Polygon behandelt wird, und der Wert gibt den Index dieses Polygons an. Falls es kein Polygon mit dem gegebenen Index gibt, wird die Anweisung nicht ausgeführt. Ein weiterer Vorteil dieser Methode ist, dass Sie Anfang und Ende eines bestimmten Polygons nicht selber (durch Vergleich von Koordinaten) bestimmen müssen. Für jeden Index wird die Anweisung für alle Wires dieses Polygons ausgeführt. Mit 0 als zweitem Parameter ist das Verhalten genau so, als wäre kein zweiter Parameter angegeben worden.
Die Wires, die mit contours() erreicht werden, beginnen immer in einem positiven Polygon. Um herauszufinden wo ein Teilpolygon endet und das nächste beginnt, speichern Sie einfach die Koordinate (x1,y1) des ersten Wires und prüfen diese gegenüber (x2,y2) jedes folgenden Wires. Sobald die beiden Werte identisch sind, ist der letzte Wire des Teilpolygons gefunden. Es gilt immer, dass der zweite Punkt (x2,y2) identisch mit dem ersten Punkt (x1,y1) des nächsten Wires in diesem Teilpolygon ist.
Um herauszufinden ob man innerhalb bzw. ausserhalb der Polygons ist, nehmen Sie einen beliebigen Umriss-Wire und stellen sich Sie vor, von dessen Punkt (x1,y1) zum Punkt (x2,y2) zu sehen. Rechts vom Wire ist immer innerhalb des Polygons. Hinweis: Wenn Sie einfach ein Polygon zeichnen wollen, brauchen Sie all diese Details nicht.
board(B) { B.signals(S) { S.polygons(P) { int x0, y0, first = 1; P.contours(W) { if (first) { // a new partial polygon is starting x0 = W.x1; y0 = W.y1; } // ... // do something with the wire // ... if (first) first = 0; else if (W.x2 == x0 && W.y2 == y0) { // this was the last wire of the partial polygon, // so the next wire (if any) will be the first wire // of the next partial polygon first = 1; } } } } }
board(B) { B.signals(S) { S.polygons(P) { // handle only the "positive" polygons: int i = 1; int active; do { active = 0; P.contours(W, i) { active = 1; // do something with the wire } i++; } while (active); } } }
angle | real (0.0...359.9) | |
layer | int | |
x1, y1 | int (linke untere Ecke) | |
x2, y2 | int (rechte obere Ecke) |
angle gibt an um wieviel Grad das Rechteck gegen den Uhrzeigersinn um seinen Mittelpunkt gedreht ist. Der Mittelpunkt ergibt sich aus (x1+x2)/2 und (y1+y2)/2.
board(B) { B.rectangles(R) { printf("Rectangle: (%d %d), (%d %d)\n", R.x1, R.y1, R.x2, R.y2); } }
grid | UL_GRID | |
name | string (siehe Anmerkung) | |
xreflabel | string |
attributes() | UL_ATTRIBUTE (siehe Anmerkung) | |
classes() | UL_CLASS | |
layers() | UL_LAYER | |
libraries() | UL_LIBRARY | |
nets() | UL_NET | |
parts() | UL_PART | |
sheets() | UL_SHEET |
Das xreflabel Member liefert den Format-String der für die Darstellung von Querverweis-Labels benutzt wird.
Das Loop member attributes() geht durch die globalen Attribute.
schematic(S) { S.parts(P) printf("Part: %s\n", P.name); }
junctions() | UL_JUNCTION (siehe Anmerkung) | |
labels() | UL_LABEL | |
pinrefs() | UL_PINREF (siehe Anmerkung) | |
texts() | UL_TEXT (veraltet, siehe Anmerkung) | |
wires() | UL_WIRE |
Das Loop member texts() wurde in früheren EAGLE-Versionen benutzt um durch die Labels eines Segments zu gehen und ist nur noch aus Kompatibilitätsgründen vorhanden. Es liefert den Text von Querverweis-Labels nicht an der richtigen Position. Benutzen Sie das labels() Loop member um die Labels eines Segments anzusprechen.
schematic(SCH) { SCH.sheets(SH) { printf("Sheet: %d\n", SH.number); SH.nets(N) { printf("\tNet: %s\n", N.name); N.segments(SEG) { SEG.pinrefs(P) { printf("connected to: %s, %s, %s\n", P.part.name, P.instance.name, P.pin.name); } } } } }
area | UL_AREA | |
number | int |
busses() | UL_BUS | |
circles() | UL_CIRCLE | |
frames() | UL_FRAME | |
nets() | UL_NET | |
parts() | UL_PART | |
polygons() | UL_POLYGON | |
rectangles() | UL_RECTANGLE | |
texts() | UL_TEXT | |
wires() | UL_WIRE |
schematic(SCH) { SCH.sheets(S) { printf("Sheet: %d\n", S.number); } }
airwireshidden | int | |
class | UL_CLASS | |
name | string (SIGNAL_NAME_LENGTH) |
contactrefs() | UL_CONTACTREF | |
polygons() | UL_POLYGON | |
vias() | UL_VIA | |
wires() | UL_WIRE |
SIGNAL_NAME_LENGTH | max. empfohlene Länge eines Signalnamens (wird nur für formatierte Ausgaben benutzt) |
board(B) { B.signals(S) printf("Signal: %s\n", S.name); }
angle | real (0.0...359.9) | |
dx[layer], dy[layer] | int (size) | |
flags | int (SMD_FLAG_...) | |
layer | int (siehe Anmerkung) | |
name | string (SMD_NAME_LENGTH) | |
roundness | int (siehe Anmerkung) | |
signal | string | |
x, y | int (Mittelpunkt, siehe Anmerkung) |
SMD_FLAG_STOP | Lötstopmaske generieren | |
SMD_FLAG_THERMALS | Thermals generieren | |
SMD_FLAG_CREAM | Lotpastenmaske generieren |
SMD_NAME_LENGTH | max. empfohlenen Länge eines Smd-Namens (identisch mit CONTACT_NAME_LENGTH) |
angle gibt an um wieviel Grad das Smd gegen den Uhrzeigersinn um seinen Mittelpunkt gedreht ist.
Der Wert, den flags liefert, muss mit den SMD_FLAG_... Konstanten maskiert werden um die einzelnen Flag-Einstellungen zu ermitteln, wie zum Beispiel in
if (smd.flags & SMD_FLAG_STOP) { ... }Falls Ihr ULP lediglich die Objekte darstellen soll, brauchen Sie sich nicht explizit um diese Flags zu kümmern. Die dx[] und dy[] Members liefern die richtigen Daten; ist zum Beispiel SMD_FLAG_STOP gesetzt, so liefert dx[LAYER_TSTOP] den Wert 0, was zur Folge haben sollte, dass in diesem Layer nichts gezeichnet wird. Das flags Member ist hauptsächlich für ULPs gedacht, die Script-Dateien erzeugen mit denen Bibliotheksobjekte kreiert werden.
library(L) { L.packages(PAC) { PAC.contacts(C) { if (C.smd) printf("Smd: '%s', (%d %d), dx=%d, dy=%d\n", C.name, C.smd.x, C.smd.y, C.smd.dx, C.smd.dy); } } }
area | UL_AREA | |
library | string | |
name | string (SYMBOL_NAME_LENGTH) |
circles() | UL_CIRCLE | |
frames() | UL_FRAME | |
rectangles() | UL_RECTANGLE | |
pins() | UL_PIN | |
polygons() | UL_POLYGON | |
texts() | UL_TEXT (siehe Anmerkung) | |
wires() | UL_WIRE |
SYMBOL_NAME_LENGTH | max. empfohlene Länge eines Symbol-Namens (wird nur für formatierte Ausgaben benutzt) |
library(L) { L.symbols(S) printf("Sym: %s\n", S.name); }
angle | real (0.0...359.9) | |
font | int (FONT_...) | |
layer | int | |
mirror | int | |
ratio | int | |
size | int | |
spin | int | |
value | string | |
x, y | int (Aufhängepunkt) |
wires() | UL_WIRE (siehe Anmerkung) |
FONT_VECTOR | Vector-Font | |
FONT_PROPORTIONAL | Proportional-Font | |
FONT_FIXED | Fixed-Font |
Wurde der UL_TEXT aus einem UL_ELEMENT- oder UL_INSTANCE-Kontext angesprochen, so liefern die Members die tatsächlichen Werte, so wie sie in der Board- oder Schaltplan-Zeichnung zu finden sind.
board(B) { B.texts(T) { printf("Text: %s\n", T.value); } }
diameter[layer] | int | |
drill | int | |
drillsymbol | int | |
end | int | |
flags | int (VIA_FLAG_...) | |
shape[layer] | int (VIA_SHAPE_...) | |
start | int | |
x, y | int (Mittelpunkt) |
VIA_FLAG_STOP | Lötstopmaske immer generieren |
VIA_SHAPE_SQUARE | square | |
VIA_SHAPE_ROUND | round | |
VIA_SHAPE_OCTAGON | octagon | |
VIA_SHAPE_ANNULUS | annulus | |
VIA_SHAPE_THERMAL | thermal |
Beachten Sie bitte, dass diameter und shape auf jeden Fall den Durchmesser bzw. die Form zurückliefern, welche ein Via in dem gegebenen Layer hätte, selbst wenn das konkrete Via diesen Layer gar nicht überdeckt (oder wenn dieser Layer im Layer-Setup überhaupt nicht benutzt wird).
start und end liefern den Layer, in dem dieses Via beginnt bzw. endet. Der Wert von start ist dabei immer kleiner als der von end.
drillsymbol liefert die Nummer des Bohrsymbols, welches diesem Bohrdurchmesser zugeordnet worden ist (siehe die Liste der definierten Bohrsymbole im Handbuch). Ein Wert von 0 bedeutet, dass diesem Bohrdurchmesser kein Bohrsymbol zugeordnet ist.
board(B) { B.signals(S) { S.vias(V) { printf("Via: (%d %d)\n", V.x, V.y); } } }
arc | UL_ARC | |
cap | int (CAP_...) | |
curve | real | |
layer | int | |
style | int (WIRE_STYLE_...) | |
width | int | |
x1, y1 | int (Anfangspunkt) | |
x2, y2 | int (Endpunkt) |
pieces() | UL_WIRE (siehe Anmerkung) |
CAP_FLAT | flache Kreisbogen-Enden | |
CAP_ROUND | runde Kreisbogen-Enden | |
WIRE_STYLE_CONTINUOUS | durchgezogen | |
WIRE_STYLE_LONGDASH | lang gestrichelt | |
WIRE_STYLE_SHORTDASH | kurz gestrichelt | |
WIRE_STYLE_DASHDOT | Strich-Punkt-Linie |
Der cap Parameter ist nur für echte Kreisbögen von Bedeutung und liefert für gerade Wires immer CAP_ROUND.
Ob ein UL_WIRE ein Kreisbogen ist oder nicht kann durch Abfragen des boolschen Rückgabewertes des arc Data Members herausgefunden werden. Falls dieses 0 liefert, liegt ein gerader Wire vor, ansonsten ein Kreisbogen. Liefert arc nicht 0 so darf es weiter dereferenziert werden um die für einen UL_ARC spezifischen Parameter Start- und Endwinkel, Radius und Mittelpunkt zu erfragen. Diese zusätzlichen Parameter sind normalerweise nur von Bedeutung wenn der Kreisbogen gezeichnet oder anderweitig verarbeitet werden soll, und dabei die tatsächliche Form eine Rolle spielt.
board(B) { B.wires(W) { printf("Wire: (%d %d) (%d %d)\n", W.x1, W.y1, W.x2, W.y2); } }
Es gibt drei Arten von Definitionen:
Der Gültigkeitsbereich einer Konstanten- oder Variablen-Definition reicht von der Zeile, in der sie definiert wurde, bis zum Ende des gegenwärtigen Blocks, oder bis zum Ende des User-Language-Programms, wenn die Definition ausserhalb aller Blöcke steht.
Der Gültigkeitsbereich einer Funktions-Definition reicht
von der schließenden geschweiften Klammer
(}) des Funktionsrumpfes bis zum Ende des User-Language-Programms.
Konstanten kann man auch mit bestimmten Werten initialisieren, wie in
Konstanten-Definitionen
Konstanten werden mit Hilfe des Schlüsselworts
enum definiert, wie in
enum { a, b, c };
womit man den drei Konstanten a, b und c
die Werte 0, 1 und 2 zuweisen würde.
enum { a, b = 5, c };
wo a den Wert 0, b den Wert 5 und
c den Wert 6 erhält.
Variablen-Definitionen
Die allgemeine Syntax einer Variablen-Definition ist
[numeric] type identifier [= initializer][, ...];
wobei type ein
Daten- oder
Objekt-Typ ist,
identifier ist der Name der Variablen, und initializer
ist ein optionaler Initialisierungswert.
Mehrfach-Variablen-Definitionen desselben Typs werden durch Kommas (,) getrennt.
Wenn auf identifier ein Paar eckiger Klammern ([]) folgt, wird ein Array von Variablen des gegebenen Typs definiert. Die Größe des Arrays wird zur Laufzeit automatisch bestimmt.
Das optionale Schlüsselwort numeric kann mit String-Arrays verwendet werden, um sie alphanumerisch mit der Funktion sort() sortieren zu lassen.
Standardmäßig (wenn kein Initializer vorhanden ist), werden Daten-Variablen auf 0 gesetzt (oder "", falls es sich um einen String handelt), und Objekt -Variablen werden mit "invalid" initialisiert.
int i; | definiert eine int-Variable mit dem Namen i | |
string s = "Hello"; | definiert eine string-Variable mit dem Namen s und initialisiert sie mit "Hello" | |
real a, b = 1.0, c; | definiert drei real-Variablen mit den Namen a, b und c und initialisiert b mit dem Wert 1.0 | |
int n[] = { 1, 2, 3 }; | definiert ein Array of int und initialisiert die ersten drei Elemente mit 1, 2 und 3 | |
numeric string names[]; | definiert ein string-Array das alphanumerisch sortiert werden kann | |
UL_WIRE w; | definiert ein UL_WIRE-Objekt mit dem Namen w |
UL_SIGNAL signals[]; ... UL_SIGNAL s = signals[0]; printf("%s", s.name);
Die allgemeine Syntax einer Funktions-Definition lautet
type identifier(parameters) { statements }wobei type ein Daten- oder Objekt-Typ ist, identifier der Name einer Funktion, parameters eine durch Kommas getrennte Liste von Parameter-Definitionen und statements eine Reihe von Statements.
Funktionen die keinen Wert zurückgeben, haben den Typ void.
Eine Funktion muss definiert werden, bevor sie aufgerufen werden kann, und Funktionsaufrufe können nicht rekursiv sein (eine Funktion kann sich nicht selbst aufrufen).
Die Statements im Funktionsrumpf können die Werte der Parameter ändern, das hat aber keinen Einfluss auf die Argumente des Funktionsaufrufs.
Die Ausführung einer Funktion kann mit dem return-Statement beendet werden. Ohne return-Statement wird der Funktionsrumpf bis zu seiner schließenden geschweiften Klammer (}) ausgeführt.
Ein Aufruf der exit()-Funktion beendet das gesamte User-Language-Programm.
Kommandozeilen-Argumente sind für das Programm über die globalen Builtin-Variablen argc und argv verfügbar.
int CountDots(string s) { int dots = 0; for (int i = 0; s[i]; ++i) if (s[i] == '.') ++dots; return dots; } string dotted = "This.has.dots..."; output("test") { printf("Number of dots: %d\n", CountDots(dotted)); }
Unary | ! ~ + - ++ -- | |
Multiplicative | * / % | |
Additive | + - | |
Shift | << >> | |
Relational | < <= > >= | |
Equality | == != | |
Bitwise AND | & | |
Bitwise XOR | ^ | |
Bitwise OR | | | |
Logical AND | && | |
Logical OR | || | |
Conditional | ?: | |
Assignment | = *= /= %= += -= &= ^= |= <<= >>= | |
Comma | , |
Die Assoziativität ist links nach rechts für alle Operatoren ausser für Unary, Conditional und Assignment, die rechts-nach-links-assoziativ sind.
Die normale Operator-Priorität kann durch den Gebrauch von
runden Klammern geändert werden.
Bitweise Operatoren
Bitweise Operatoren kann man nur auf die Datentypen
char und
int anwenden.
Unary | ||
~ | Bitwise (1's) complement | |
Binary | ||
<< | Shift left | |
>> | Shift right | |
& | Bitwise AND | |
^ | Bitwise XOR | |
| | Bitwise OR | |
Assignment | ||
&= | Assign bitwise AND | |
^= | Assign bitwise XOR | |
|= | Assign bitwise OR | |
<<= | Assign left shift | |
>>= | Assign right shift |
Unary | ||
! | Logical NOT | |
Binary | ||
&& | Logical AND | |
|| | Logical OR |
Die Verwendung eines String-Ausdrucks mit einem logischen Operator prüft, ob ein String leer ist.
Die Verwendung eines
Objekt-Typs mit einem logischen Operator
prüft, ob dieses Objekt gültige Daten enthält.
Vergleichs-Operatoren
Vergleichs-Operatoren können mit
Ausdrücken von jedem Datentyp angewendet
werden, ausgenommen
Objekt-Typen.
< | Kleiner als | |
<= | Kleiner gleich | |
> | Größer als | |
>= | Größer gleich | |
== | Gleich | |
!= | Ungleich |
?: | Conditional | |
, | Komma |
Der Conditional-Operator wird verwendet, um eine Entscheidung innerhalb eines Ausdrucks zu treffen, wie in
int a; // ...code that calculates 'a' string s = a ? "True" : "False";was folgender Konstruktion entspricht
int a; string s; // ...code that calculates 'a' if (a) s = "True"; else s = "False";aber der Vorteil des Conditional-Operators ist, dass er innerhalb des Ausdrucks verwendet werden kann.
Der Komma-Operator wird verwendet, um eine Sequenz von Ausdrücken von links nach rechts auszuwerten; Typ und Wert des rechten Operanden werden als Ergebnis verwendet.
Beachten Sie, dass Argumente in einem Funktionsaufruf und
Mehrfach-Variablen-Deklarationen ebenfalls Kommas als Trennzeichen verwenden.
Dabei handelt es sich aber nicht um den Komma-Operator!
Arithmetische Operatoren
Arithmetische Operatoren lassen sich auf die Datentypen
char,
int und
real
anwenden (ausser ++, --, % und %=).
Unary | ||
+ | Unary plus | |
- | Unary minus | |
++ | Pre- oder postincrement | |
-- | Pre- oder postdecrement | |
Binary | ||
* | Multiply | |
/ | Divide | |
% | Remainder (modulus) | |
+ | Binary plus | |
- | Binary minus | |
Assignment | ||
= | Simple assignment | |
*= | Assign product | |
/= | Assign quotient | |
%= | Assign remainder (modulus) | |
+= | Assign sum | |
-= | Assign difference |
Siehe auch String-Operatoren
String-Operatoren
String-Operatoren lassen sich mit den Datentypen
char,
int und
string anwenden.
Der linke Operand muss immer vom Typ
string sein.
Binary | ||
+ | Concatenation | |
Assignment | ||
= | Simple assignment | |
+= | Append to string |
Der +-Operator fasst zwei Strings zusammen oder fügt ein Zeichen am Ende eines Strings hinzu und gibt den resultierenden String zurück.
Der +=-Operator fügt einen String oder eine Zeichen an das Ende eines gegebenen Stings an.
Siehe auch Arithmetische Operatoren
Ausdrücke
Es gibt folgende Ausdrücke:
Ausdrücke können mit Hilfe von
runden Klammern gruppiert werden
und dürfen rekursiv aufgerufen werden, was bedeutet, dass
ein Ausdruck aus Unterausdrücken bestehen darf.
Arithmetischer Ausdruck
Ein arithmetischer Ausdruck ist jede Kombination von
numerischen Operanden und
arithmetischem Operator oder
bitweisem Operator.
a + b c++ m << 1
a = x + 42 b += c s = "Hello"
s + ".brd" t + 'x'
Komma-Ausdrücke werden von links nach rechts ausgewertet, und das Ergebnis eines Komma-Ausdrucks ist der Typ und der Wert des am weitesten rechts stehenden Ausdrucks.
i++, j++, k++
int a; // ...code that calculates 'a' string s = a ? "True" : "False";
int p = strchr(s, 'b');
Compound-Statements können beliebig verschachtelt werden.
Expression-Statement (Ausdrucksanweisung)
Ein Expression-Statement ist jeder beliebige
Ausdruck, gefolgt von einem
Semikolon.
Ein Expression-Statement wird ausgeführt, indem der Ausdruck ausgewertet wird. Alle Nebeneffekte dieser Auswertung sind vollständig abgearbeitet, bevor das nächste Statement ausgeführt wird. Die meisten Expression-Statements sind Zuweisungen oder Funktionsaufrufe.
Ein Spezialfall ist das leere Statement, das nur aus einem
Semikolon besteht.
Ein leeres Statement tut nichts, aber es ist nützlich in den Fällen,
in denen die ULP-Syntax ein Statement erwartet, aber Ihr Programm
keines benötigt.
Iteration-Statements sind
Control-Statements (Steueranweisungen)
Control-Statements werden verwendet, um den Programmfluss
zu steuern.
do...while
for
while
Selection-Statements sind
if...else
switch
Jump-Statements sind
break
continue
return
break
Das break-Statement hat die allgemeine Syntax
break;
und bricht sofort das nächste einschließende
do...while-,
for-,
switch- oder
while-Statement ab.
Dies gilt ebenso für loop members von Objekt-Typen.
Da all diese Statements gemischt und verschachtelt werden können,
stellen Sie bitte sicher, dass break vom korrekten Statement
aus ausgeführt wird.
continue
Das continue-Statement hat die allgemeine Syntax
continue;
und transferiert die Steuerung direkt zur Testbedingung des
nächsten einschließenden
do...while-,
while-, oder
for-Statements oder zum Increment-Ausdruck
des nächsten einschließenden
for-Statements.
Da all diese Statements gemischt und verschachtelt werden können,
stellen Sie bitte sicher, dass continue das richtige Statement
betrifft.
condition wird nach der ersten Ausführung von
statement getestet, was bedeutet, dass das Statement
wenigstens einmal ausgeführt wird.
Wenn kein
break oder
return
im statement vorkommt, muss das statement
den Wert der condition verändern, oder condition selbst
muss sich während der Auswertung ändern, um eine Endlosschleife zu
vermeiden.
Der Initialisierungs-Ausdruck init initialsiert normalerweise
einen oder mehrere Schleifenzähler. Er kann auch eine neue Variable
als Schleifenzähler definieren. Eine solche Variable ist bis zum
Ende des aktiven Blocks gültig.
Der else-Teil bezieht sich immer auf das letzte if
ohne else.
Wenn Sie etwas anderes wollen, müssen Sie
geschweifte Klammern verwenden, um
die Statements zu gruppieren, wie in
do...while
Das do...while-Statement hat die allgemeine Syntax
do statement while (condition);
und führt das statement aus, bis der condition-Ausdruck
null wird.
Beispiel
string s = "Trust no one!";
int i = -1;
do {
++i;
} while (s[i]);
for
Das for-Statement hat die allgemeine Syntax
for ([init]; [test]; [inc])-Statement
und führt folgende Schritte aus:
Wenn es kein
break oder
return
im statement gibt, muss der inc-Ausdruck (oder das
statement) den Wert des test-Ausdrucks beeinflussen,
oder test selbst muss sich während der Auswertung ändern, um
eine Endlosschleife zu vermeiden.
Beispiel
string s = "Trust no one!";
int sum = 0;
for (int i = 0; s[i]; ++i)
sum += s[i]; // sums up the characters in s
if...else
Das if...else-Statement hat die allgemeine Syntax
if (expression)
t_statement
[else
f_statement]
Der bedingte Ausdruck wird ausgewertet und, wenn der Wert ungleich
null ist, wird t_statement ausgeführt.
Andernfalls wird f_statement ausgeführt, sofern der
else-Teil vorhanden ist.
if (a == 1) {
if (b == 1)
printf("a == 1 and b == 1\n");
}
else
printf("a != 1\n");
return
Eine Funktion mit einem Return-Typ
ungleich void muss mindestens ein return-Statement
mit der Syntax
return expression;enthalten, wobei die Auswertung von expression einen Wert ergeben muss, der kompatibel ist mit dem Return-Typ der Funktion.
Wenn die Funktion vom Typ void ist, kann ein return-Statement
ohne expression verwendet werden, um vom Funktionsaufruf zurückzukehren.
Jedes case_statement kann mit einem oder mehreren case-Labels
versehen sein.
Die Auswertung des Ausdrucks case_exp jedes case-Labels muss
einen konstanten Integer-Wert ergeben, der innerhalb des umschließenden
switch-Statements nur einmal vorkommt.
Es darf höchstens ein default-Label vorkommen.
Nach der Auswertung von sw_exp werden die case_exp-Ausdrücke
auf Übereinstimmung geprüft. Wenn eine Übereinstimmung gefunden wurde,
wird die Steuerung zum case_statement mit dem entsprechenden
case-Label transferiert.
Wird keine Übereinstimmung gefunden und gibt es ein default-Label,
dann erhält def_statement die Steuerung.
Andernfalls wird kein Statement innerhalb der
switch-Anweisung ausgeführt.
Die Programmausführung wird nicht beeinflusst, wenn case- und
default-Labels auftauchen. Die Steuerung wird einfach an das
folgende Statement übergeben.
Um die Programmausführung am Ende einer Gruppe von Statements für
ein bestimmtes
case zu stoppen, verwenden Sie das break-Statement.
condition wird vor der erstmöglichen Ausführung
von statement getestet, was bedeutet, dass das Statement
überhaupt nicht ausgeführt wird, wenn condition von Anfang an
null ist.
Wenn kein
break oder
return
im statement vorkommt, muss das statement
den Wert der condition verändern, oder condition selbst
muss sich während der Auswertung ändern, um eine Endlosschleife zu
vermeiden.
Viele Objekt-Typen haben ihren
eigenen Konstanten-Bereich, in dem die Builtin-Constants
für das betreffende Objekt aufgelistet sind (siehe
z.B. UL_PIN).
Die folgenden Builtin-Constants sind zusätzlich zu denen definiert,
die für die einzelnen Objekt-Typen aufgeführt sind:
switch
Das switch-Statement hat die allgemeine Syntax
switch (sw_exp) {
case case_exp: case_statement
...
[default: def_statement]
}
und erlaubt die Übergabe der Steuerung an eines von mehreren
case-Statements (mit "case" als Label), abhängig vom Wert des Ausdrucks
sw_exp (der vom Integral-Typ sein muss).
Beispiel
string s = "Hello World";
int vowels = 0, others = 0;
for (int i = 0; s[i]; ++i)
switch (toupper(s[i])) {
case 'A':
case 'E':
case 'I':
case 'O':
case 'U': ++vowels;
break;
default: ++others;
}
printf("There are %d vowels in '%s'\n", vowels, s);
while
Das while-Statement hat die allgemeine Syntax
while (condition) statement
und führt statement so lange aus, wie der condition-Ausdruck
ungleich null ist.
Beispiel
string s = "Trust no one!";
int i = 0;
while (s[i])
++i;
Builtins
Builtins sind Konstanten, Variablen, Funktionen und
Statements, die zusätzliche Informationen liefern
und die Manipulation der Daten erlauben.
Builtin-Constants
Builtin-Constants liefern Informationen über
Objekt-Parameter, wie die maximale empfohlene Namenslänge, Flags und so weiter.
EAGLE_VERSION | EAGLE-Programm-Versionsnummer (int) | |
EAGLE_RELEASE | EAGLE-Programm-Release-Nummer (int) | |
EAGLE_SIGNATURE | ein String der EAGLE-Programmnamen, -Version und -Copyright-Information enthält | |
REAL_EPSILON | die minimale positive real Zahl, so dass 1.0 + REAL_EPSILON != 1.0 | |
REAL_MAX | der größte mögliche real Wert | |
REAL_MIN | der kleinste mögliche (positive!) real Wert die kleinste darstellbare Zahl ist -REAL_MAX | |
INT_MAX | der größte mögliche int Wert | |
INT_MIN | der kleinste mögliche int Wert | |
PI | der Wert von "pi" (3.14..., real) | |
usage | ein string der den Text der #usage-Direktive enthält |
Diese Builtin-Constants enthalten die Directory-Pfade, die im Directories-Dialog definiert wurden, wobei etwaige spezielle Variablen ($HOME und $EAGLEDIR) durch ihre aktuellen Werte ersetzt wurden. Da jeder Pfad aus mehreren Directories bestehen kann, sind diese Konstanten string-Arrays mit jeweils einem einzelnen Directory in jedem Eintrag. Der erste leere Eintrag bedeutet das Ende des Pfades:
path_lbr[] | Libraries | |
path_dru[] | Design Rules | |
path_ulp[] | User Language Programs | |
path_scr[] | Scripts | |
path_cam[] | CAM Jobs | |
path_epf[] | Projects |
Wenn Sie diese Konstanten dazu verwenden, einen vollständigen Dateinamen zu bilden, so müssen Sie ein Directory-Trennzeichen benutzen, wie etwa in
string s = path_lbr[0] + '/' + "mylib.lbr";
Die im Moment durch den USE-Befehl benutzten Bibliotheken:
used_libraries[] |
int argc | Anzahl der Argumente, die an den RUN Befehl übergeben wurden | |
string argv[] | Argumente, die an den RUN-Befehl übergeben wurden (argv[0] ist der volle ULP-Datei-Name) |
Sie können auch eigene Funktionen definieren und sie dazu verwenden, um Ihre User-Language-Programme zu strukturieren.
Builtin-Functions sind in folgende Kategorien eingeteilt:
Die folgenden Character-Funktionen sind verfügbar:
isalnum | Buchstaben (A bis Z oder a bis z) oder Digits (0 bis 9) | |
isalpha | Buchstaben (A bis Z oder a bis z) | |
iscntrl | Delete-Zeichen oder normale Steuerzeichen (0x7F oder 0x00 bis 0x1F) | |
isdigit | Digits (0 bis 9) | |
isgraph | Druckbare Zeichen (ausser Leerzeichen) | |
islower | Kleinbuchstaben (a bis z) | |
isprint | Druckbare Zeichen (0x20 bis 0x7E) | |
ispunct | Punctuation-Zeichen (iscntrl oder isspace) | |
isspace | Space, Tab, Carriage Return, New Line, Vertical Tab oder Formfeed (0x09 bis 0x0D, 0x20) | |
isupper | Großbuchstaben (A bis Z) | |
isxdigit | Hex-Digits (0 bis 9, A bis F, a bis f) |
char c = 'A'; if (isxdigit(c)) printf("%c is hex\n", c); else printf("%c is not hex\n", c);
Folgende Datei-Funktionen sind verfügbar:
Weitere Informationen über Ausgaben in eine Datei, finden Sie unter output().fileerror prüft den Status beliebiger I/O-Operation, die seit dem letzten Aufruf dieser Funktion ausgeführt wurden und gibt 0 zurück, wenn alles in Ordnung war. Verursachte eine der I/O-Operationen einen Fehler, wird ein Wert ungleich 0 ausgegeben.
Vor der Ausführung von I/O-Operationen sollten Sie mit fileerror den Fehlerstatus zurücksetzten. Nach der Ausführung der I/O-Operationen rufen Sie fileerrorerneut auf, um zu prüfen ob alles in Ordnung war.
Wenn fileerror einen Wert ungleich 0 ausgibt (und so einen Fehler anzeigt), wird dem Benutzer eine Fehlermeldung angezeigt.
fileerror(); output("file.txt", "wt") { printf("Test\n"); } if (fileerror()) exit(1);
fileglob sucht in einem Verzeichnis nach pattern.
pattern kann '*' und '?' als Platzhalter enthalten. Endet pattern mit einem '/', wird der Inhalt des angegebenen Verzeichnis zurückgegeben.
Namen die im resultierenden array mit einem '/' enden, sind Verzeichnisnamen.
Das array ist alphabetisch sortiert, die Verzeichnisse kommen zuerst.
Die Sondereinträge '.' und '..' (für das aktuelle und das übergeordnete Verzeichnis) werden nie in array geschrieben.
Wenn pattern nicht gefunden wird, oder wenn Sie kein Recht haben, das angegebene Verzeichnis zu durchsuchen, ist das array leer.
Das Pfad-Trennzeichen in array ist immer ein Forward-Slash (Schrägstrich).
So ist sichergestellt, dass User-Language-Progamme betriebssystemunabhängig arbeiten.
In pattern wird der backslash ('\') auch als Pfad-Trennzeichen behandelt.
Die Sortierreihenfolge unter Windows unterscheidet nicht zwischen Groß- und Kleinschreibung. |
string a[]; int n = fileglob(a, "*.brd");
if (board) board(B) { output(filesetext(B.name, ".out")) { ... } }
board(B) printf("Board: %s\nSize: %d\nTime: %s\n", B.name, filesize(B.name), t2string(filetime(B.name)));
Folgendes Datei-Einlesen ist möglich:
Siehe output() für Informationen zum Thema 'In eine Datei schreiben'.Wenn dest ein Character-Array ist, werden Binär-Daten aus der Datei ausgelesen. Der Rückgabewert entspricht dann der Anzahl der Bytes, die in das Character-Array eingelesen wurden (das entspricht der Dateigröße).
Wenn dest ein String-Array ist, wird die Datei als Textdatei gelesen (eine Zeile pro Array-Member). Der Rückgabewert zeigt die Anzahl der Zeilen, die in das Array eingelesen wurden. Newline-Zeichen werden nicht berücksichtigt.
Wenn dest ein String ist, wird die ganze Datei in diesen String eingelesen. Der Rückgabewert ist die Länge des Strings (die nicht unbedingt der Dateigröße entsprechen muss, wenn das Betriebssystem Textdateien mit "cr/lf" anstatt "newline" am Zeilenende speichert).
char b[]; int nBytes = fileread(b, "data.bin"); string lines[]; int nLines = fileread(lines, "data.txt"); string text; int nChars = fileread(text, "data.txt");
Die folgenden mathematischen Funktionen sind verfügbar:
real x = -1.0; real r = sqrt(2 * x);zur Fehlermeldung
Invalid argument in call to 'sqrt(-2)'
Der Return-Typ dieser Funktionen ist identisch mit dem größeren Typ der Argumente. type muss char, int oder real sein.
real x = 2.567, y = 3.14; printf("The maximum is %f\n", max(x, y));
real x = 2.567; printf("The rounded value of %f is %f\n", x, round(x));
PI | der Wert von "pi" (3.14...) |
real x = PI / 2; printf("The sine of %f is %f\n", x, sin(x));
real x = 2.1; printf("The square root of %f is %f\n", x, sqrt(x));
Die folgenden sonstigen Funktionen sind verfügbar:
Die exit-Funktion beendet die Ausführung des User-Language-Programms.
Wird result (integer) angegeben, wird es als Rückgabewert
des Programms benutzt.
Wird ein command-String angegeben, wird dieser Befehl genauso ausgeführt, als
wäre über die Kommandozeile direkt nach dem RUN-Befehl eingegeben worden. In diesem
Fall wird der Rückgabewert des ULPs auf EXIT_SUCCESS gesetzt.
EXIT_SUCCESS | Rückgabewert für erfolgreiche Programmausführung (Wert 0) | |
EXIT_FAILURE | Rückgabewert für fehlerhafte Programmausführung (Wert -1) |
In dem folgenden Beispiel sind alle im ULP verwendeten Strings im Array I18N[] aufgelistet, beginnend mit einem String der die verschiedenen Sprachcodes enthält die dieses ULP unterstützt. Beachten Sie die vtab-Zeichen, die dazu benutzt werden, die einzelnen Teile jedes Strings zu trennen (diese sind wichtig für die lookup-Funktion) und die Benutzung der Kommas um die Strings zu trennen. Die eigentliche Arbeit wird in der Funktion tr() gemacht, welche die übersetzte Version des übergebenen Strings zurückliefert. Sollte der ursprüngliche String im I18N-Array nicht gefunden werden, oder es keine Übersetzung für die aktuelle Sprache geben, so wird der ursprüngliche String unübersetzt verwendet.
Die erste im I18N-Array definierte Sprache muss diejenige sein, in der die im restlichen ULP verwendeten Strings geschrieben sind, und sollte generell Englisch sein um das Programm einer möglichst großen Zahl von Benutzern zugänglich zu machen.
string I18N[] = { "en\v" "de\v" "it\v" , "I18N Demo\v" "Beispiel für Internationalisierung\v" "Esempio per internazionalizzazione\v" , "Hello world!\v" "Hallo Welt!\v" "Ciao mondo!\v" , "+Ok\v" "+Ok\v" "+Approvazione\v" , "-Cancel\v" "-Abbrechen\v" "-Annullamento\v" }; int Language = strstr(I18N[0], language()) / 3; string tr(string s) { string t = lookup(I18N, s, Language, '\v'); return t ? t : s; } dlgDialog(tr("I18N Demo")) { dlgHBoxLayout dlgSpacing(350); dlgLabel(tr("Hello world!")); dlgHBoxLayout { dlgPushButton(tr("+Ok")) dlgAccept(); dlgPushButton(tr("-Cancel")) dlgReject(); } };
Ein array das mit lookup() benutzt werden kann, besteht aus Text-Strings, wobei jeder String einen Daten-Record darstellt.
Jeder Daten-Record enthält eine beliebige Anzahl von Feldern, die durch das Zeichen separator (default ist '\t', der Tabulator) getrennt sind. Das erste Feld in einem Record wird als key benutzt und hat die Nummer 0.
Alle Records müssen eindeutige key-Felder haben. Keines der key-Felder darf leer sein - ansonsten ist nicht definiert welcher Record gefunden wird.
Enthält der erste String in array einen "Header"-Record (der Record, in dem der
Inhalt der Felder beschrieben wird), bestimmt lookup mit einem String
field_name automatisch den Index des Feldes. Das erlaubt es, die lookup-Funktion
zu benutzen, ohne genau zu wissen, welcher Feld-Index die gewünschten Daten enthält.
Es bleibt dem Benutzer überlassen, sicherzustellen, dass der erste Record tatsächlich
Header-Informationen enthält.
Ist der key-Parameter beim Aufruf von lookup() ein leerer String, wird der erste String von array verwendet. Das erlaubt dem Programm zu bestimmen, ob ein Header-Record mit den gewünschten Feld-Namen existiert.
Enthält ein Feld das separator-Zeichen, muss es in Anführungszeichen
eingeschlossen werden (wie in "abc;def", wobei hier das Semikolon (';')
das Trennzeichen ist). Das gilt auch für Felder, die Anführungszeichen
(") enthalten, wobei die Anführungszeichen im Feld verdoppelt werden müssen
(wie hier: "abc;""def"";ghi" ergibt also abc;"def";ghi).
Es wird empfohlen den "tab"-Separator (default) zu verwenden, der diese Probleme nicht
kennt (kein Feld kann einen Tabulator enthalten).
Hier folgt eine Beispiel-Daten-Datei (zur besseren Lesbarkeit wurde der Separator ';' verwendet):
Name;Manufacturer;Code;Price 7400;Intel;I-01-234-97;$0.10 68HC12;Motorola;M68HC1201234;$3.50
string OrderCodes[]; if (fileread(OrderCodes, "ordercodes") > 0) { if (lookup(OrderCodes, "", "Code", ';')) { schematic(SCH) { SCH.parts(P) { string OrderCode; // both following statements do exactly the same: OrderCode = lookup(OrderCodes, P.device.name, "Code", ';'); OrderCode = lookup(OrderCodes, P.device.name, 2, ';'); } } } else dlgMessageBox("Missing 'Code' field in file 'ordercodes'); }
Der spezielle Wert -1 für index bewirkt, dass die Funktion den Typ der momentan vom Editor-Fenster verwendeten Palette liefert.
Falls index oder type ausserhalb des gültigen Wertebereichs liegen wird eine Fehlermeldung ausgegeben und das ULP abgebrochen.
PALETTE_TYPES | die Anzahl der Palette-Typen (3) | |
PALETTE_BLACK | die Palette für schwarzen Hintergrund (0) | |
PALETTE_WHITE | die Palette für weißen Hintergrund (1) | |
PALETTE_COLORED | die Palette für farbigen Hintergrund (2) | |
PALETTE_ENTRIES | die Anzahl der Farben pro Palette (64) |
In jedem Fall definiert das Argument number die Zahl der Einträge im Array oder in den Arrays.
string A[]; int n = 0; A[n++] = "World"; A[n++] = "Hello"; A[n++] = "The truth is out there..."; sort(n, A); for (int i = 0; i < n; ++i) printf(A[i]);
numeric string Nets[], Parts[], Instances[], Pins[]; int n = 0; int index[]; schematic(S) { S.nets(N) N.pinrefs(P) { Nets[n] = N.name; Parts[n] = P.part.name; Instances[n] = P.instance.name; Pins[n] = P.pin.name; ++n; } sort(n, index, Nets, Parts, Instances, Pins); for (int i = 0; i < n; ++i) printf("%-8s %-8s %-8s %-8s\n", Nets[index[i]], Parts[index[i]], Instances[index[i]], Pins[index[i]]); }Die Idee dahinter ist, dass an ein Netz mehrere Pins angeschlossen sein können. In einer Netzliste wollen Sie unter Umständen die Netznamen sortieren und innerhalb eines Netzes die Bauteilnamen, und so weiter.
Beachten Sie die Verwendung des Schlüsselworts numeric in den String-Arrays. Das führt dazu, dass die String-Sortierung einen numerischen Teil am Ende des Namens berücksichtigt (IC1, IC2,... IC9, IC10 anstelle von IC1, IC10, IC2,...IC9).
Wenn man einen Satz von Arrays sortiert, muss das erste (Index-)Array
vom Typ int sein und braucht nicht
initialisiert zu werden. Jeder vor dem Aufruf der sort-Funktion
vorhandene Inhalt wird mit den resultierenden Indexwerten überschrieben.
status()
Siehe auch dlgMessageBox()
Die status-Funktion zeigt die angegebene message in der Statuszeile
des Editor-Fensters an, in dem das ULP läuft.
Zur Sicherheit werden Sie vor der Ausführung des Befehls gefragt, ob
Sie dieses zulassen möchten, damit nicht ein "böses" ULP unerwünschte externe
Befehle ausführen kann.
Wird dieser Dialog abgebrochen, so liefert der system() Aufruf -1 zurück.
Wird der Dialog bestätigt, so werden alle künftigen system() Aufrufe in der
laufenden EAGLE-Sitzung mit genau der gleichen Befehlszeile ohne weiteren
Bestätigungsdialog ausgeführt.
system()
Die system-Funktion führt das im command angegebene externe
Programm aus und wartet, bis dieses beendet ist.
Ein-/Ausgabe-Umleitung
Soll ein externes Programm seine Eingaben von einer bestimmten Datei lesen
(bzw. seine Ausgaben in eine bestimmte Datei schreiben), so muss die Ein- bzw.
Ausgabe umgeleitet werden.
Unter Linux und Mac OS X geschieht dies einfach durch Anhängen von '<'
bzw. '>' an die Befehlszeile, jeweils gefolgt von der gewünschten Datei,
wie in
system("program < infile > outfile");womit program gestartet wird und es von infile liest und nach outfile schreibt. |
Unter Windows muss explizit ein Kommando-Prozessor gestartet werden um dies zu
ermöglichen, wie in
system("cmd.exe /c program < infile > outfile");(auf DOS-basierten Windows-Systemen verwenden Sie command.com anstatt cmd.exe). |
Läuft ein externes Programm längere Zeit, und Sie wollen, dass der system()-Aufruf
sofort zurückkehrt, ohne zu warten, bis das Programm beendet ist, so können Sie
unter Linux und Mac OS X einfach ein '&' an die Befehlszeile anfügen,
wie in
system("program &"); |
Unter Windows muss explizit ein Kommando-Prozessor gestartet werden um dies zu
ermöglichen, wie in
system("cmd.exe /c start program");(auf DOS-basierten Windows-Systemen verwenden Sie command.com anstatt cmd.exe). |
int result = system("simulate -f filename");Hiermit würde ein Simulationsprogramm aufgerufen und diesem eine Datei übergeben werden, die das ULP gerade erzeugt hat. Beachten Sie bitte, dass simulate hier nur ein Beispiel und nicht Bestandteil des EAGLE-Paketes ist!
EAGLE speichert alle Koordinaten und Größen als int-Werte mit einer Auflösung von 1/10000mm (0.1µ). Die oben angegebenen Einheiten-Konvertier-Funktionen können dazu verwendet werden, die internen Einheiten in die gewünschten Maßeinheiten umzuwandeln.
board(B) { B.elements(E) { printf("%s at (%f, %f)\n", E.name, u2mm(E.x), u2mm(E.y)); } }
Die folgenden Print-Funktionen sind verfügbar:
Wenn ein Fehler auftritt, liefert printf -1.
Der Format-String enthält zwei Objekt-Typen - einfache Zeichen und Format-Specifier:
% [flags] [width] [.prec] type
Jede Format-Spezifizierung beginnt mit dem Prozentzeichen (%). Nach dem % kommt folgendes, in dieser Reihenfolge:
d | signed decimal int | |
o | unsigned octal int | |
u | unsigned decimal int | |
x | unsigned hexadecimal int (with a, b,...) | |
X | unsigned hexadecimal int (with A, B,...) | |
f | signed real value von der Form [-]dddd.dddd | |
e | signed real value von der Form [-]d.dddde[±]ddd | |
E | wie e, aber mit E für Exponent | |
g | signed real value entweder wie e oder f, abhängig vom gegebenen Wert und Präzision | |
G | wie g, aber mit E für Exponent, wenn e-Format verwendet wird | |
c | einzelnes Zeichen | |
s | Character-String | |
% | das %-Zeichen wird ausgegeben |
"-" | das formatierte Argument wird innerhalb des Feldes linksbündig ausgegeben; normalerweise ist die Ausgabe rechtsbündig | |
"+" | ein positiver Wert mit Vorzeichen wird mit Pluszeichen (+) ausgegeben; normalerweise werden nur negative Werte mit Vorzeichen ausgegeben | |
" " | ein positiver Wert mit Vorzeichen wird mit Leerzeichen am Anfang ausgegeben; wenn "+" und " " angegeben sind, überschreibt "+" die Angabe " " |
Die Breite wird entweder direkt mit einem Dezimalstellen-String oder indirekt mit einem Stern (*) gesetzt. Wenn Sie * verwenden, legt das nächste Argument im Aufruf (das vom Typ int sein muss) die minimale Feldbreite fest.
Auf keinen Fall führt ein nicht existierendes oder zu ein kleines Feld dazu, dass ein Wert abgeschnitten wird. Wenn das Ergebnis der Konvertierung breiter ist als das Feld, wird das Feld einfach so vergrößert, dass das Ergebnis platz hat.
n | Mindestens n Zeichen werden ausgegeben. Wenn der Ausgabewert weniger als n Zeichen hat, wird er mit Leerzeichen aufgefüllt (rechts wenn das "-"-Flag gesetzt ist, sonst links). | |
0n | Mindestens n Zeichen werden ausgegeben. Wenn der Ausgabewert weniger als n Zeichen hat, wird links mit Nullen aufgefüllt. | |
* | Die Argument-Liste liefert den Width-Specifier, der dem eigentlichen (zu formatierenden) Argument vorausgehen muss. |
keiner | Präzision auf Standardwert gesetzt. | |
.0 | Für int-Typen, Präzision wird auf Default gesetzt; für real-Typen, kein Dezimalpunkt wird ausgegeben. | |
.n | n Zeichen oder n Dezimalstellen werden ausgegeben. Wenn der Ausgabewert mehr als n Zeichen hat, kann er abgeschnitten oder gerundet werden (abhängig vom Typ-Zeichen). | |
* | Die Argument-Liste liefert den Präzisions-Specifier, der dem eigentlichen (zu formatierenden) Argument vorausgehen muss. |
douxX | 1 | |
eEf | 6 | |
gG | alle signifikanten Stellen | |
c | keine Auswirkung | |
s | gesamten String ausgeben |
douxX | .n spezifiziert dass mindestens n Zeichen ausgegeben werden. Wenn das Eingangs-Argument weniger als n Stellen hat, wird der Ausgangswert links mit Nullen aufgefüllt. Wenn das Eingangs-Argument mehr als n Stellen hat, wir die Ausgabe nicht abgeschnitten. | |
eEf | .n spezifiziert dass n Zeichen nach dem Dezimalpunkt ausgegeben werden, und die letzte ausgegebene Stelle wird gerundet. | |
gG | .n spezifiziert dass höchstens n signifikante Stellen ausgegeben werden. | |
c | .n hat keinen Einfluss auf die Ausgabe. | |
s | .n spezifiziert dass nicht mehr als n Zeichen gedruckt werden. |
char c = 0x00; printf("%c", c);
int i = 42; real r = 3.14; char c = 'A'; string s = "Hello"; printf("Integer: %8d\n", i); printf("Hex: %8X\n", i); printf("Real: %8f\n", r); printf("Char: %-8c\n", c); printf("String: %-8s\n", s);
Im Falle eines Fehlers liefert sprintf den Wert -1.
string result; int number = 42; sprintf(result, "The number is %d", number);
Die folgenden String-Funktionen sind verfügbar:
Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.
string s = "This is a string"; char c = 'a'; int pos = strchr(s, c); if (pos >= 0) printf("The character %c is at position %d\n", c, pos); else printf("The character was not found\n");
strjoin fügt alle Einträge aus array, getrennt durch den angegebenen separator zusammen, und liefert den Ergebnis-String.
Wenn separator ein Newline-Zeichen ("\n") ist, wird der Ergebnis-String mit einem Newline-Zeichen abgeschlossen. So erhält man eine Textdatei mit N Zeilen (jede davon ist mit einem Newline-Zeichen abgeschlossen). Die Datei wird mit den Funktionen fileread() eingelesen und mit split in ein Array mit N Strings aufgeteilt und zu dem ursprünglichen String, der aus der Datei eingelesen wurde, hinzugefügt.
string a[] = { "Field 1", "Field 2", "Field 3" }; string s = strjoin(a, ':');
string s = "This is a string"; int l = strlen(s); printf("The string is %d characters long\n", l);
string s = "This Is A String"; string r = strlwr(s); printf("Prior to strlwr: %s - after strlwr: %s\n", s, r);
Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.
string s = "This is a string"; char c = 'a'; int pos = strrchr(s, c); if (pos >= 0) printf("The character %c is at position %d\n", c, pos); else printf("The character was not found\n");
Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.
string s1 = "This is a string", s2 = "is a"; int pos = strrstr(s1, s2); if (pos >= 0) printf("The substring starts at %d\n", pos); else printf("The substring was not found\n");
strsplit teilt den String s am angegebenen separator und speichert die so erzeugten Felder in array.
Wenn separator ein Newline-Zeichen ist ("\n"), wird das letzte Feld einfach ignoriert, sofern es leer ist. So erhält man eine Textdatei, die aus N Zeilen besteht (jede durch Newline beendet). Diese wird durch die Funktion fileread() eingelesen und in ein Array von N Strings aufgeteilt. Mit jedem anderen separator ist ein leeres Feld am Ende des Strings gültig. So entstehen aus "a:b:c:" 4 Felder, das letzte davon ist leer.
string a[]; int n = strsplit(a, "Field 1:Field 2:Field 3", ':');
Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.
string s1 = "This is a string", s2 = "is a"; int pos = strstr(s1, s2); if (pos >= 0) printf("The substring starts at %d\n", pos); else printf("The substring was not found\n");
Der Wert für length muss positiv sein, andernfalls wird ein leerer String zurückgegeben. Wenn length nicht angegeben ist, wird der Reststring (beginnend bei start) zurückgegeben.
Wenn start auf eine Position ausserhalb des Strings deutet, wird ein leerer String zurückgegeben.
string s = "This is a string"; string t = strsub(s, 4, 7); printf("The extracted substring is: %s\n", t);
string s = "3.1415"; real r = strtod(s); printf("The value is %f\n", r);
string s = "1234"; int i = strtol(s); printf("The value is %d\n", i);
string s = "This Is A String"; string r = strupr(s); printf("Prior to strupr: %s - after strupr: %s\n", s, r);
Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.
Falls length angegeben wird, wird die aktuelle Länge des gefundenen Teilstrings in dieser Variablen zurückgegeben.
Reguläre Ausdrücke erlauben es Ihnen, ein Muster innerhalb eines Text-Strings
zu finden. Zum Beispiel würde der reguläre Ausdruck "i.*a" eine Zeichenfolge finden,
die mit 'i' beginnt, gefolgt von einem beliebigen Zeichen ('.') beliebig oft ('*'),
und mit 'a' endet. Er würde auf "is a", "is this a" oder "ia" passen.
Einzelheiten zu regulären Ausdrücken finden Sie zum Beispiel in dem Buch
Reguläre Ausdrücke von Jeffrey E. F. Friedl.
string s1 = "This is a string", s2 = "i.*a"; int len = 0; int pos = strxstr(s1, s2, 0, len); if (pos >= 0) printf("The substring starts at %d and is %d charcaters long\n", pos, len); else printf("The substring was not found\n");
Die folgenden Zeit-Funktionen sind verfügbar:
int CurrentTime = time();
Nach 86400000 Millisekunden (d.h. alle 24 Stunden) beginnt der Wert wieder bei 0.
int elapsed = timems();
int t = time(); printf("It is now %02d:%02d:%02d\n", t2hour(t), t2minute(t), t2second(t));
Die folgenden Objekt-Funktionen sind verfügbar:
Die clrgroup()-Funktion löscht die Gruppen-Flags des gegebenen Objekts, so dass es nicht mehr Bestandteil einer vorher definierten Gruppe ist.
Wird die Funktion auf ein Objekt angewendet, das andere Objekte enthält (wie etwa ein UL_BOARD oder UL_NET), so werden die Gruppen-Flags aller enthaltenen Objekte rekursiv gelöscht.
board(B) { B.elements(E) clrgroup(E); }
Wurde im Editor eine Gruppe definiert, so kann die ingroup()-Funktion benutzt werden um zu prüfen, ob ein bestimmtes Objekt Bestandteil der Gruppe ist.
Objekte mit einem einzelnen Aufhängepunkt, die in der aktuellen Zeichnung gezielt selektiert werden können (wie etwa UL_TEXT, UL_VIA, UL_CIRCLE etc.), liefern beim Aufruf von ingroup() einen Wert ungleich 0 wenn dieser Aufhängepunkt innerhalb der Gruppe liegt.
Ein UL_WIRE liefert 0, 1, 2 oder 3, je nachdem, ob keiner, der erste, der zweite oder beide Endpunkte in der Gruppe liegen.
Ein UL_RECTANGLE bzw. UL_FRAME liefert einen Wert ungleich 0 wenn einer oder mehrere seiner Eckpunkte in der Gruppe liegen. Der Wert hat Bit 0 gesetzt für die rechte obere Ecke, Bit 1 für die linke obere, Bit 2 für die linke untere und Bit 3 für die rechte untere Ecke.
Objekte ohne Aufhängepunkt (wie etwa UL_NET, UL_SEGMENT, UL_SIGNAL etc.) liefern einen Wert ungleich 0 wenn eines oder mehrere der Objekte, die sie enthalten, in der Gruppe liegen.
UL_CONTACTREF und UL_PINREF haben zwar selber keinen Aufhängepunkt, liefern aber einen Wert ungleich 0 wenn der referenzierte UL_CONTACT bzw. UL_PIN innerhalb der Gruppe liegt.
output("group.txt") { board(B) { B.elements(E) { if (ingroup(E)) printf("Element %s is in the group\n", E.name); } } }
Die setgroup()-Funktion setzt die Gruppen-Flags des gegebenen Objekts, so dass es Bestandteil der Gruppe ist.
Werden keine flags angegeben, so wird das Objekt als Ganzes zur Gruppe hinzugefügt (d.h. alle seine Aufhängepunkte, falls es mehrere hat).
Hat flags einen Wert ungleich Null, werden nur die Gruppen-Flags der angegebenen Punkte gesetzt. Für einen UL_WIRE bedeutet dies, dass '1' das Gruppen-Flag des ersten Punkts setzt, '2' das des zweiten und '3' beide. Etwaige bereits gesetzte Gruppen-Flags werden durch den Aufruf von setgroup() nicht verändert.
Wird die Funktion auf ein Objekt angewendet, das andere Objekte enthält (wie etwa ein UL_BOARD oder UL_NET), so werden die Gruppen-Flags aller enthaltenen Objekte rekursiv gesetzt.
board(B) { B.elements(E) setgroup(E); }
Die allgemeine Syntax von Builtin-Statements ist
name(parameters) statementwobei name der Name des Builtin-Statement ist, parameters steht für einen oder mehrere Parameter, und statement ist der Code, der innerhalb des vom Builtin-Statement geöffneten Kontexts ausgeführt wird.
Beachten Sie, dass es sich bei statement um eine Compound-Statement handeln kann, wie in
board(B) { B.elements(E) printf("Element: %s\n", E.name); B.Signals(S) printf("Signal: %s\n", S.name); }Die folgenden Builtin-Statements sind verfügbar:
Das board-Statement öffnet einen Board-Kontext wenn das gegenwärtige Editor-Fenster ein Board enthält. Eine Variable vom Typ UL_BOARD wird angelegt und erhält den Namen, den identifier angibt.
Sobald der Board-Kontext erfolgreich geöffnet wurde und eine Board-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die Board-Variable zugreifen, um weitere Daten aus dem Board zu erhalten.
Wenn das gegenwärtige Editor-Fenster kein Board enthält, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
project.board(B) { ... }Das öffnet einen Board-Kontext, unabhängig davon, ob das gegenwärtige Editor-Fenster ein Board oder einen Schaltplan enthält. Allerdings muss es auf dem Desktop ein Fenster geben, das dieses Board enthält!
if (board) board(B) { B.elements(E) printf("Element: %s\n", E.name); }
Das deviceset-Statement öffnet einen Device-Set-Kontext wenn das gegenwärtige Editor-Fenster ein Device-Set enthält. Eine Variable vom Typ UL_DEVICESET wird angelegt und erhält den Namen, den identifier angibt.
Sobald der Device-Set-Kontext erfolgreich geöffnet wurde und eine Device-Set-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die Device-Set-Variable zugreifen, um weitere Daten aus dem Device-Set zu erhalten.
Wenn das gegenwärtige Editor-Fenster kein Device-Set enthält, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
if (deviceset) deviceset(D) { D.gates(G) printf("Gate: %s\n", G.name); }
Das library-Statement öffnet einen Library-Kontext wenn das gegenwärtige Editor-Fenster eine Library enthält. Eine Variable vom Typ UL_LIBRARY wird angelegt und erhält den Namen, den identifier angibt.
Sobald der Library-Kontext erfolgreich geöffnet wurde und eine Board-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die Library-Variable zugreifen, um weitere Daten aus der Bibliothek zu erhalten.
Wenn das gegenwärtige Editor-Fenster keine Bibliothek enthält, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
if (library) library(L) { L.devices(D) printf("Device: %s\n", D.name); }
Das output-Statement öffnet eine Datei mit dem Namen filename und dem Parameter mode für die Ausgabe mit nachfolgenden printf()-Aufrufen. Sobald die Datei erfolgreich geöffnet wurde, wird statement ausgeführt, und danach wird die Datei geschlossen.
Wenn die Datei nicht geöffnet werden kann, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
Standardmäßig wird die erzeugte Datei in das Projekt Verzeichnis geschrieben.
a | an existierende Datei anhängen oder neue Datei anlegen, falls die Datei nicht existiert | |
w | neue Datei anlegen (existierende überschreiben) | |
t | Datei im Textmodus öffnen | |
b | Datei im Binärmodus öffnen | |
D | Datei am Ende der EAGLE-Sitzung löschen (funktioniert nur zusammen mit w) | |
F | diesen Dateinamen erzwingen (normalerweise werden *.brd, *.sch und *.lbr abgewiesen) |
Mode-Parameter können in beliebiger Kombination und Reihenfolge angegeben werden. Allerdings ist nur der letzte aus a und w bzw. t und b signifikant. Die Angabe "abtw" würde zum Beispiel eine Textdatei öffnen (entsprechend "wt").
void PrintText(string s) { printf("This also goes into the file: %s\n", s); } output("file.txt", "wt") { printf("Directly printed\n"); PrintText("via function call"); }
Das package-Statement öffnet einen Package-Kontext wenn das gegenwärtige Editor-Fenster ein Package enthält. Eine Variable vom Typ UL_PACKAGE wird angelegt und erhält den Namen, den identifier angibt.
Sobald der Package-Kontext erfolgreich geöffnet wurde und eine Package-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die Package-Variable zugreifen, um weitere Daten aus dem Package zu erhalten.
Wenn das gegenwärtige Editor-Fenster kein Package enthält, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
if (package) package(P) { P.contacts(C) printf("Contact: %s\n", C.name); }
Das schematic-Statement öffnet einen Schaltplan-Kontext wenn das gegenwärtige Editor-Fenster einen Schaltplan enthält. Eine Variable vom Typ UL_SCHEMATIC wird angelegt und erhält den Namen, den identifier angibt.
Sobald der Schaltplan-Kontext erfolgreich geöffnet wurde und eine UL_SCHEMATIC-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die UL_SCHEMATIC-Variable zugreifen, um weitere Daten aus dem Schaltplan zu erhalten.
Wenn das gegenwärtige Editor-Fenster keinen Schaltplan enthält, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
project.schematic(S) { ... }Das öffnet einen UL_SCHEMATIC-Kontext, unabhängig davon, ob das gegenwärtige Editor-Fenster ein Board oder einen Schaltplan enthält. Allerdings muss es auf dem Desktop ein Fenster geben, das diesen Schaltplan enthält!
if (schematic) schematic(S) { S.parts(P) printf("Part: %s\n", P.name); }
Das sheet-Statement öffnet einen UL_SHEET-Kontext, wenn das gegenwärtige Editor-Fenster eine Schaltplanseite enthält. Eine Variable vom Typ UL_SHEET wird angelegt und erhält den Namen, den identifier angibt.
Sobald der UL_SHEET-Kontext erfolgreich geöffnet wurde und eine UL_SHEET-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die UL_SHEET-Variable zugreifen, um weitere Daten aus der Seite zu erhalten.
Wenn das gegenwärtige Editor-Fenster keine Schaltplanseite enthält, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
if (sheet) sheet(S) { S.parts(P) printf("Part: %s\n", P.name); }
Das symbol-Statement öffnet einen Symbol-Kontext wenn das gegenwärtige Editor-Fenster ein Symbol enthält. Eine Variable vom Typ UL_SYMBOL wird angelegt und erhält den Namen, den identifier angibt.
Sobald der Symbol-Kontext erfolgreich geöffnet wurde und eine Symbol-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die Symbol-Variable zugreifen, um weitere Daten aus dem Symbol zu erhalten.
Wenn das gegenwärtige Editor-Fenster kein Symbol enthält, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.
if (symbol) symbol(S) { S.pins(P) printf("Pin: %s\n", P.name); }
In den folgenden Abschnitten werden die User-Language-Dialoge detailliert beschrieben:
Vordefinierte Dialoge | beschreibt vordefinierte Standard-Dialoge | |
Dialog-Objekte | beschreibt die Objekte aus denen ein Dialog bestehen kann | |
Layout-Information | erklärt wie man die Position von Objekten in einem Dialog bestimmt | |
Dialog-Funktionen | beschreibt besondere Funktionen, die mit Dialogen verwendet werden können | |
Ein vollständiges Beispiel | zeigt ein vollständiges ULP mit einem Dialog zur Daten-Eingabe |
Es gibt folgende vordefinierte Dialoge:
Siehe Dialog-Objekte für Informationen über das Definieren eigener, komplexer Benutzer-Dialoge.Die dlgDirectory-Funktion zeigt einen Verzeichnis-Dialog in dem der Benutzer ein Verzeichnis selektieren kann.
Title zeigt den Titel des Dialogs.
Wenn Start nicht leer ist, wird diese Angabe als Startpunkt für dlgDirectory verwendet.
string dirName; dirName = dlgDirectory("Select a directory", "");
Die Funktionen dlgFileOpen und dlgFileSave zeigen einen Datei-Dialog, aus dem der Benutzer eine Datei selektieren kann.
Title wird als Titel des Dialogs verwendet.
Ist Start nicht leer, wird diese Angabe als Startpunkt für den Dialog verwendet. Ansonsten wird das aktuelle Verzeichnis verwendet.
Nur Dateien, die der Angabe von Filter entsprechen, werden angezeigt. Wird kein Filter angegeben, werden alle Dateien angezeigt.
Filter kann entweder ein einfacher Pattern sein (wie in "*.brd"), eine Liste von Patterns (wie in "*.bmp *.jpg") oder kann sogar beschreibenden Text enthalten, wie in "Bitmap-Dateien (*.bmp)". Falls die "Dateityp" Combo-Box des Datei-Dialogs mehrere Einträge haben soll, müssen diese durch zwei Semikolons voneinander getrennt werden, wie in "Bitmap-Dateien (*.bmp);;Andere Bilddateien (*.jpg *.png)".
string fileName; fileName = dlgFileOpen("Select a file", "", "*.brd");
Die dlgMessageBox-Funktion zeigt die angegebene Message in einem modalen Dialog-Fenster und wartet darauf, dass der Benutzer eine der Schaltflächen, die über button_list definiert wurden, selektiert.
Falls Message HTML-Tags enthält, so müssen die Zeichen '<', '>' und '&', damit sie als solche angezeigt werden, als "<", ">" bzw. "&" angegeben werden.
button_list ist eine optionale Liste durch Komma getrennter Strings, die einen Satz von
Schaltflächen, die unten im Dialog-Fenster angezeigt werden, definiert.
Es können maximal drei Schaltflächen definiert werden.
Wird keine button_list angegeben, erscheint automatisch "OK".
Die erste Schaltfläche in button_list wird die Default-Schaltfläche (sie wird gedrückt, wenn der Benutzer ENTER drückt), und der letzte Eintrag in der Liste wird der "Cancel-Button", der gewählt wird, wenn der Benutzer Esc drückt oder das Dialog-Fenster einfach schließt. Sie können eine andere Schaltfläche als Default-Button definieren, indem Sie den String mit einem '+' beginnen. Wollen Sie eine andere Schaltfläche als Cancel-Button definieren, stellen Sie dem String ein '-' voran. Um einen Schaltflächen-Text mit einem '+' oder '-' zu beginnen, muss das Zeichen mit einem Escape-Zeichen markiert werden.
Enthält der Text ein '&', wird das folgende Zeichen zum Hotkey. Wenn der Benutzer die entsprechende Taste drückt, wird diese Schaltfläche gewählt. Um das Zeichen '&' im Schaltflächen-Text zu verwenden, muss es mit einem Escape-Zeichen markiert werden.
Dem Dialog-Fenster kann ein Icon mitgegeben werden, indem das erste Zeichen in Message auf
';' - für eine Information
'!' - für eine Warnung
':' - für einen Fehler
gesetzt wird.
Soll die Message jedoch mit einem dieser Zeichen beginnen, so muss dieses mit einem
Escape-Zeichen markiert werden.
Unter Mac OS X führt nur das Zeichen ':' tatsächlich zur Darstellung eines Icons. Alle anderen werden ignoriert. |
if (dlgMessageBox("Are you sure?", "&Yes", "&No") == 0) { // let's do it! }
dlgCell | ein Grid-Cell-Kontext | |
dlgCheckBox | eine Checkbox | |
dlgComboBox | ein Combo-Box-Auswahl-Feld | |
dlgDialog | die Grundlage eines jeden Dialogs | |
dlgGridLayout | ein Grid-basierter-Layout-Kontext | |
dlgGroup | ein Group-Feld | |
dlgHBoxLayout | ein Horizontal-Box-Layout-Kontext | |
dlgIntEdit | ein Integer-Eingabe-Feld | |
dlgLabel | ein Text-Label | |
dlgListBox | eine List-Box | |
dlgListView | eine List-View | |
dlgPushButton | ein Push-Button | |
dlgRadioButton | ein Radio-Button | |
dlgRealEdit | ein Real-Eingabe-Feld | |
dlgSpacing | ein Layout-Spacing-Objekt | |
dlgSpinBox | ein Spin-Box-Auswahl-Feld | |
dlgStretch | ein Layout-Stretch-Objekt | |
dlgStringEdit | ein String-Eingabe-Feld | |
dlgTabPage | eine Tab-Page | |
dlgTabWidget | ein Tab-Page-Container | |
dlgTextEdit | ein Text-Eingabe-Feld | |
dlgTextView | ein Text-Viewer-Feld | |
dlgVBoxLayout | ein Vertical-Box-Layout-Kontext |
dlgCell
Siehe auch dlgGridLayout,
dlgHBoxLayout,
dlgVBoxLayout,
Layout-Information,
Ein vollständiges Beispiel
Das dlgCell-Statement definiert die Lage einer Cell in einem Grid-Layout-Kontext.
Der Index für Reihe (row) und Spalte (column) beginnt mit 0, so das die obere linke Cell den Index (0, 0) hat.
Mit zwei Parametern wird das Dialog-Objekt, das in statement angegeben wurde, in einer Cell an der Stelle row und column plaziert. Mit vier Parametern erstreckt sich das Objekt über alle Cells von row/column bis zu row2/column2.
Standardmäßig enthält dlgCell ein dlgHBoxLayout. Enthält eine Cell mehr als ein Dialog-Objekt, werden diese nebeneinander horizontal angeordnet.
string Text; dlgGridLayout { dlgCell(0, 0) dlgLabel("Cell 0,0"); dlgCell(1, 2, 4, 7) dlgTextEdit(Text); }
Das dlgCheckBox-Statement definiert eine Checkbox mit dem angegebenen Text.
Wenn Text ein '&' enthält, wird das folgende Zeichen als Hotkey markiert. Wenn der Benutzer Alt+hotkey drückt, wird die Checkbox selektiert/deselektiert. Um ein '&'-Zeichen im Text zu verwenden, muss er mit einem Escape-Zeichen markiert werden.
dlgCheckBox wird hauptsächlich in dlgGroup benutzt,
kann aber auch anders verwendet werden.
Alle Check-Boxen innerhalb eines gemeinsamen Dialogs müssen unterschiedliche Checked-Variablen haben!
Wenn ein Benutzer eine dlgCheckBox wählt, wird die entsprechende Checked-Variable auf 1 gesetzt, andernfalls ist sie auf 0 gesetzt. Der ursprüngliche Wert von Checked definiert, ob eine Checkbox anfänglich selektiert ist oder nicht. Wenn Checked ungleich 0 ist, ist die Checkbox defaultmäßig selektiert.
Das optionale statement wird jedesmal ausgeführt, wenn Sie die dlgCheckBox selektieren/deselektieren.
int mirror = 0; int rotate = 1; int flip = 0; dlgGroup("Orientation") { dlgCheckBox("&Mirror", mirror); dlgCheckBox("&Rotate", rotate); dlgCheckBox("&Flip", flip); }
Das dlgComboBox-Statement definiert ein Combo-Box-Auswahlfeld mit dem Inhalt von array.
Selected reflektiert den Index des selektieren Combo-Box-Eintrags. Der erste Eintrag hat den Index 0.
Jedes Element von array legt den Inhalt eines Eintrags in der Combo-Box fest. Keiner der Strings in array darf leer sein (sollte ein leerer String existieren, werden alle folgenden, inklusive des leeren, ignoriert).
Das optionale statement wird jedesmal ausgeführt, wenn die Auswahl in der dlgComboBox verändert wird.
Bevor statement ausgeführt wird, werden alle Variablen , die in den Dialog-Objekten verwendet werden
neu eingelesen und jede Veränderung innerhalb von statement wird im Dialog angezeigt.
Ist der Ausgangswert von Selected ausserhalb des Bereichs der Indices von array, wird dieser auf 0 gesetzt.
string Colors[] = { "red", "green", "blue", "yellow" }; int Selected = 2; // initially selects "blue" dlgComboBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
Die dlgDialog-Funktion, die durch block definiert wird. Das ist das einzige Dialog-Objekt das tatsächlich eine User-Language-Builtin-Funktion ist. Sie kann überall wo ein Funktionsaufruf erlaubt ist, verwendet werden.
block enthält normalerweise andere Dialog-Objekte. Man kann aber auch andere User-Language-Statements verwenden, zum Beispiel, um bedingungsabhängig dem Dialog Objekte hinzuzufügen (siehe das zweite der folgenden Beispiele).
Standardmäßig enthält dlgDialog ein dlgVBoxLayout, so dass man sich bei einem einfachen Dialog um das Layout kein Gedanken machen muss.
Ein dlgDialog sollte an einer Stelle den Aufruf der dlgAccept() -Funktion enthalten, um dem Benutzer zu erlauben, den Dialog zu schließen und dessen Inhalt zu akzeptieren.
Wenn Sie nur eine einfache Message-Box oder einen einfachen Dialog brauchen, können Sie statt dessen auch einen der Vordefinierten Dialoge verwenden.
int Result = dlgDialog("Hello") { dlgLabel("Hello world"); dlgPushButton("+OK") dlgAccept(); }; int haveButton = 1; dlgDialog("Test") { dlgLabel("Start"); if (haveButton) dlgPushButton("Here") dlgAccept(); };
Das dlgGridLayout-Statement öffnet einen Grid-Layout-Kontext.
Das einzige Dialog-Objekt, das direkt in statement verwendet werden kann, ist dlgCell, das die Position eines Dialog-Objekts im Grid-Layout festlegt.
Die Indices für row und column beginnen mit 0, so dass die obere linke Cell den
Index (0, 0) hat.
Die Anzahl der Reihen und Spalten wird automatisch an die Position von Dialog-Objekten,
die innerhalb des Grid-Layout-Kontexts definiert werden, angepasst. Die Anzahl der
Reihen und Spalten muss nicht explizit definiert werden.
dlgGridLayout { dlgCell(0, 0) dlgLabel("Row 0/Col 0"); dlgCell(1, 0) dlgLabel("Row 1/Col 0"); dlgCell(0, 1) dlgLabel("Row 0/Col 1"); dlgCell(1, 1) dlgLabel("Row 1/Col 1"); }
Das dlgGroup-Statement definiert eine Gruppe mit dem gegebenen Title.
Standardmäßig enthält dlgGroup ein dlgVBoxLayout, so braucht man sich bei einer einfachen Group keine Gedanken zum Layout machen.
dlgGroup wird hauptsächlich für einen Satz von Radio-Buttons
oder Check-Boxes verwendet, kann aber auch jedes andere beliebige
Objekt in statement enthalten.
Radio-Buttons in einer dlgGroup werden mit 0 beginnend numeriert.
int align = 1; dlgGroup("Alignment") { dlgRadioButton("&Top", align); dlgRadioButton("&Center", align); dlgRadioButton("&Bottom", align); }
Das dlgHBoxLayout-Statement öffnet einen Horizontal-Box-Layout-Kontext für das angegebene statement.
dlgHBoxLayout { dlgLabel("Box 1"); dlgLabel("Box 2"); dlgLabel("Box 3"); }
Das dlgIntEdit-Statement definiert ein Integer-Eingabe-Feld mit einem in Value angegebenen Wert.
Ist Value ursprünglich ausserhalb des Bereichs Min und Max, wird er auf diesen Bereich limitiert.
int Value = 42; dlgHBoxLayout { dlgLabel("Enter a &Number between 0 and 99"); dlgIntEdit(Value, 0, 99); }
Das dlgLabel-Statement definiert ein Label mit dem angegebenen Text.
Text kann entweder ein fester String wie "Hello" sein, oder eine String-Variable.
Falls Text HTML-Tags enthält, so müssen die Zeichen '<', '>' und '&', damit sie als solche angezeigt werden, als "<", ">" bzw. "&" angegeben werden.
Wenn der Update-Parameter nicht 0 ist und Text eine String-Variable, kann deren Inhalt im statement z. B. eines dlgPushButton modifiziert werden, wodurch das Label automatisch aktualisiert wird. Das ist natürlich nur sinnvoll wenn Text eine eindeutig bestimmte String-Variable ist (und beispielsweise keine Loop-Variable eines for-Statements).
Enthält Text ein '&'-Zeichen, und kann das Objekt, das auf das Label folgt, den Keyboard-Fokus bekommen, wird das folgende Zeichen zum Hot-Key. Drückt der Benutzer Alt+hotkey, wird das Objekt, das direkt nach dlgLabel definiert wurde, aktiv. Um ein '&'-Zeichen direkt im Text zu verwenden, muss man es mit einem Escape-Zeichen markieren.
string OS = "Windows"; dlgHBoxLayout { dlgLabel(OS, 1); dlgPushButton("&Change OS") { OS = "Linux"; } }
Das dlgListBox-Statement definiert ein List-Box-Auswahl-Feld mit dem Inhalt von array.
Selected gibt den Index des selektierten List-Box-Eintrags wieder. Der erste Eintrag hat den Index 0.
Jedes Element von array legt den Inhalt einer Zeile in der List-Box fest. Keiner der Strings in array darf leer sein (sollte ein leerer String existieren, werden alle folgenden, inklusive des leeren, ignoriert).
Das optionale statement wird immer dann ausgeführt, wenn der Benutzer einen Doppelklick
auf einen Eintrag der dlgListBox ausführt.
Bevor statement ausgeführt wird, werden alle Variablen, die von Dialog-Objekten benutzt
werden, aktualisiert. Alle Änderungen, die in statement gemacht wurden, wirken sich auf
den Dialog aus, sobald das Statement zurückgegeben wird.
Ist der Ausgangswert von Selected ausserhalb des Index-Bereichs von array, wird kein Eintrag selektiert.
string Colors[] = { "red", "green", "blue", "yellow" }; int Selected = 2; // initially selects "blue" dlgListBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
Das dlgListView-Statement definiert ein mehrspaltiges List-View-Auswahl-Feld mit dem Inhalt, der in array angegeben ist.
Headers definiert die durch Tabulatoren getrennte Liste der Spalten-Überschriften.
Selected gibt den Index des selektierten List-View-Eintrags von array wieder
(die Reihenfolge in der die Einträge tatsächlich angezeigt werden, kann unterschiedlich sein,
da der Inhalt einer dlgListView in den verschiedenen Spalten sortiert werden kann).
Der erste Eintrag hat den Index 0.
Wenn kein spezieller Eintrag selektiert werden soll, wählt man für Selected den
Wert -1.
Sort gibt an, nach welcher Spalte der List-View sortiert werden soll. Die linke Spalte hat die Nummer 1. Das Vorzeichen dieses Parameters legt die Richtung der Sortierung fest (positive Werte sortieren in aufsteigender Reihenfolge). Falls Sort den Wert 0 hat, oder außerhalb der gültigen Anzahl von Spalten liegt, wird nicht sortiert. Der Rückgabewert von Sort spiegelt die vom Benutzer durch Anklicken der Spalten-Header gewählte Sortierspalte und -richtung wieder. Standardmäßig wird nach der ersten Spalte, in aufsteigender Richtung sortiert.
Jedes Element von array legt den Inhalt einer Zeile in der List-View fest und muss durch Tabulatoren getrennte Werte enthalten. Sind weniger Werte eines Elements in array definiert als im Headers-String vorgegeben, bleiben die restlichen Felder leer. Sind mehr Werte eines Element in array angegeben als im Headers-String, werden die überzählgen stillschweigend ignoriert. Keiner der Strings in array darf leer sein (sollte ein leerer String vorhanden sein, werden alle nachfolgenden, inklusive dem Leerstring ignoriert).
Enthält ein Listeneintrag Zeilenumbrüche ('\n'), so wird er entsprechend mehrzeilig dargestellt.
Das optionale statement wird ausgeführt, wann immer der Benutzer auf einen Eintrag
in dlgListView doppelklickt.
Bevor statement ausgeführt wird, werden alle Variablen, die mit den Dialog-Objekten benutzt
wurden, aktualisiert. Alle Änderungen, die in statement gemacht wurden, wirken sich auf
den Dialog aus, sobald das Statement zurückgegeben wird.
Ist der Ausgangswert von Selected ausserhalb des Index-Bereichs von array, wird kein Eintrag selektiert.
Ist Headers ein leerer String, wird das erste Element von array als Header-String benutzt. Folglich ist der Index des ersten Eintrags dann 1.
Der Inhalt von dlgListView kann in einer beliebigen Spalte sortiert werden, indem man auf dessen Spalten-Header klickt. Die Spalten-Reihenfolge kann man durch Anklicken&Ziehen des Spalten-Headers verändern. Beachten Sie, dass keine dieser Änderunen eine Auswirkung auf den Inhalt von array hat. Soll der Inhalt alphanumerisch sortiert werden, kann ein numeric string[]-Array verwendet werden.
string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" }; int Selected = 0; // initially selects "red" dlgListView("Name\tDescription", Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
Das dlgPushButton-Statement definiert einen Push-Button mit dem angegebenen Text.
Enthält Text ein '&'-Zeichen, wird das folgende Zeichen zum Hot-Key. Wenn der Benutzer dann Alt+hotkey drückt, wird dieser Button selektiert. Soll ein '&'-Zeichen im Text verwendet werden, muss es mit einem Escape-Zeichen markiert werden.
Beginnt Text mit einem '+'-Zeichen, wird dieser Button der Default-Button.
Dieser wird betätigt, wenn der Benutzer ENTER drückt.
Wenn Text mit einem '-'-Zeichen beginnt, wird dieser Button der Cancel-Button.
Dieser wird gewählt wenn der Benutzer den Dialog schließt.
Achtung: Stellen Sie sicher, dass das statement eines so markierten Buttons einen
Aufruf von dlgReject() enthält! Ansonsten ist es dem Benutzer nicht
möglich den Dialog überhaupt zu schließen!
Um ein '+' oder '-'-Zeichen als erstes Zeichen des Textes zu verwenden,
muss es mit einem Escape-Zeichen markiert werden.
Wenn der Benutzer einen dlgPushButton selektiert, wird das angegebene statement
ausgeführt.
Bevor statement ausgeführt wird, werden alle Variablen, die mit den Dialog-Objekten
benutzt wurden, aktualisiert. Alle Änderungen, die in statement gemacht wurden, wirken sich
auf den Dialog aus, sobald das Statement zurückgegeben wird.
int defaultWidth = 10; int defaultHeight = 20; int width = 5; int height = 7; dlgPushButton("&Reset defaults") { width = defaultWidth; height = defaultHeight; } dlgPushButton("+&Accept") dlgAccept(); dlgPushButton("-Cancel") { if (dlgMessageBox("Are you sure?", "Yes", "No") == 0) dlgReject(); }
Das dlgRadioButton-Statement definiert einen Radio-Button mit dem angegebenen Text.
Enthält Text ein '&'-Zeichen, wird das folgende Zeichen zum Hot-Key. Wenn der Benutzer dann Alt+hotkey drückt, wird dieser Button selektiert. Soll ein '&'-Zeichen im Text verwendet werden, muss es mit einem Escape-Zeichen markiert werden.
dlgRadioButton kann nur innerhalb einer dlgGroup verwendet werden.
Alle Radio-Buttons innerhalb derselben Group müssen dieselbe Selected-Variable haben!
Wenn der Benutzer einen dlgRadioButton selektiert, wird der Index dieses Buttons innerhalb
der dlgGroup in der Selected-Variablen gespeichert.
Der Ausgangswert von Selected definiert, welcher Radio-button per default selektiert ist.
Liegt Selected ausserhalb des gültigen Bereichs dieser Group, ist kein Radio-Button
selektiert.
Um die richtige Radio-Button-Selektion zu erhalten, muss Selected schon vor
der Definition des ersten dlgRadioButton festgelegt werden, und darf nicht verändert
werden, während man weitere Radio-Buttons hinzufügt. Ansonsten ist es ungewiss welcher
Radio-Button (wenn überhaupt einer) selektiert wird.
Das optionale statement wird ausgeführt, wenn ein dlgRadioButton selektiet wird.
int align = 1; dlgGroup("Alignment") { dlgRadioButton("&Top", align); dlgRadioButton("&Center", align); dlgRadioButton("&Bottom", align); }
Das dlgRealEdit-Statement definiert ein Real-Eingabe-Feld mit dem angegebenen Value (Wert).
Wenn Value ursprünglich ausserhalb des Bereiches von Min und Max liegt, wird dieser auf diese Werte begrenzt.
real Value = 1.4142; dlgHBoxLayout { dlgLabel("Enter a &Number between 0 and 99"); dlgRealEdit(Value, 0.0, 99.0); }
Das dlgSpacing-Statement definiert zusätzlichen Abstand in einem Vertical- bzw. Horizontal-Box-Layout-Kontext.
Size definiert die Anzahl der Pixel des zusätzlichen Abstands.
dlgVBoxLayout { dlgLabel("Label 1"); dlgSpacing(40); dlgLabel("Label 2"); }
Das dlgSpinBox-Statement definiert ein Spin-Box-Auswahl-Feld mit dem angegebenen Value.
Wenn Value ursprünglich ausserhalb des Bereiches von Min und Max liegt, wird dieser auf diese Werte begrenzt.
int Value = 42; dlgHBoxLayout { dlgLabel("&Select value"); dlgSpinBox(Value, 0, 99); }
Das dlgStretch-Statement definiert einen leeren dehnbaren Abstand in einem Vertical- oder einem Horizontal-Box-Layout-Kontext.
Factor definiert den Dehnungsfaktor des Abstands.
dlgHBoxLayout { dlgStretch(1); dlgPushButton("+OK") { dlgAccept(); }; dlgPushButton("Cancel") { dlgReject(); }; }
Das dlgStringEdit-Statement definiert ein Text-Eingabe-Feld mit dem angegebenen Text.
string Name = "Linus"; dlgHBoxLayout { dlgLabel("Enter &Name"); dlgStringEdit(Name); }
Das dlgTabPage-Statement definiert eine Tab-Page mit dem angegebenen Title, die statement enthält.
Enthält Title ein '&'-Zeichen, wird das folgende Zeichen zum Hot-Key. Drückt der Benutzer Alt+hotkey, wird diese Tab-Page geöffnet. Soll im Text ein '&'-Zeichen verwendet werden, muss es mit einem Escape-Zeichen markiert werden.
Tab-Pages können nur innerhalb eines dlgTabWidget verwendet werden.
Standardmäßig enthält dlgTabPage ein dlgVBoxLayout, so dass man sich bei einer einfachen Tab-Page nicht um das Layout kümmern muss.
dlgTabWidget { dlgTabPage("Tab &1") { dlgLabel("This is page 1"); } dlgTabPage("Tab &2") { dlgLabel("This is page 2"); } }
Das dlgTabWidget-Statement definiert einen Platzhalter für einen Satz von Tab-Pages.
statement ist eine Liste eines oder mehrerer dlgTabPage-Objekte. Es dürfen keine anderen Dialog-Objekte in dieser Liste enthalten sein.
dlgTabWidget { dlgTabPage("Tab &1") { dlgLabel("This is page 1"); } dlgTabPage("Tab &2") { dlgLabel("This is page 2"); } }
Das dlgTextEdit-Statement definiert ein mehrzeiliges text-Eingabe-Feld mit dem angegebenen Text.
Die einzelnen Zeilen in Text müssen mit einem Newline-Zeichen ('\n') getrennt werden. Beliebige Leerzeichen am Ende der Text-Zeilen werden gelöscht. Leere Zeilen am Endes des Textes werden vollständig entfernt.
string Text = "This is some text.\nLine 2\nLine 3"; dlgVBoxLayout { dlgLabel("&Edit the text"); dlgTextEdit(Text); }
Das dlgTextView-Statement definiert ein mehrzeiliges Text-Viewer-Feld mit dem angegebenen Text.
Der Text darf HTML-Tags enthalten.
Falls Link angegeben wird und der Text Hyperlinks enthält, wird statement ausgeführt wenn der Benutzer auf einen Hyperlink klickt, wobei der Wert von Link auf das gesetzt wird, was im <a href=...>-Tag als Wert für href angegeben wurde. Ist die Link-Variable nach der Ausführung von statement nicht leer, so findet die standardmäßige Behandlung von Hyperlinks statt. Dies ist auch der Fall, wenn Link vor dem Öffnen von dlgTextView bereits Text enthält, was es ermöglicht, zu Beginn an eine vorgegebene Textstelle zu positionieren.
string Text = "This is some text.\nLine 2\nLine 3"; dlgVBoxLayout { dlgLabel("&View the text"); dlgTextView(Text); }
Das dlgVBoxLayout-Statement öffnet einen Vertical-Box-Layout-Kontext für das angegebene statement.
Standardmäßig enthält dlgDialog ein dlgVBoxLayout, so dass man sich bei einfachen Dialogen keine Gedanken zum Layout machen muss.
dlgVBoxLayout { dlgLabel("Box 1"); dlgLabel("Box 2"); dlgLabel("Box 3"); }
Es gibt verschiedene Layout-Kontexte, wie grid, horizontal oder vertical.
dlgGridLayout { dlgCell(5, 2) dlgLabel("Text"); }Soll das Objekt über mehr als eine Zelle gehen, müssen Sie die Koordinaten der Start-Zelle und der End-Zelle angeben. Um eine Group zu plazieren, die sich von Reihe 1, Spalte 2 über Reihe 3, Spalte 5 erstreckt, schreiben Sie
dlgGridLayout { dlgCell(1, 2, 3, 5) dlgGroup("Title") { //... } }
Die Sonder-Objekte dlgStretch und dlgSpacing können verwendet werden, um die Verteilung der Abstände zu verfeinern.
Um zwei Buttons zu definieren, die sich bis an den rechten Rand des Dialogs erstrecken, schreiben Sie
dlgHBoxLayout { dlgStretch(1); dlgPushButton("+OK") dlgAccept(); dlgPushButton("Cancel") dlgReject(); }
dlgAccept() | schließt den Dialog und akzeptiert dessen Inhalt | |
dlgRedisplay() | aktualisiert den Dialog nachdem beliebige Werte verändert wurden | |
dlgReset() | setzt alle Dialog-Objekte auf den Ursprungswert zurück | |
dlgReject() | schließt den Dialog und verwirft dessen Inhalt |
Die dlgAccept-Funktion schließt dlgDialog, und kehrt zurück nachdem das aktuelle Statement beendet wurde.
Jede Änderung, die der Benutzer im Dialog macht, wird übernommen und an die Variablen, die bei der Definition der Dialog-Objekte angegeben wurden, kopiert.
Die optionale Angabe von Result ist der Wert der vom Dialog geliefert wird. Das sollte typischerweise ein positiver Integer-Wert sein. Wird kein Wert angegeben, ist der Standardwert gleich 1.
Bitte beachten Sie, dass dlgAccept() wieder in die normale Programm- Routine zurückkehrt, so wie in dieser Sequenz:
dlgPushButton("OK") { dlgAccept(); dlgMessageBox("Accepting!"); }Das Statement nach dlgAccept() wird noch ausgeführt!
int Result = dlgDialog("Test") { dlgPushButton("+OK") dlgAccept(42); dlgPushButton("Cancel") dlgReject(); };
Die dlgRedisplay-Funktion wird aufgerufen, um den dlgDialog, nach dem Verändern von Variablen, die in den Dialog-Objekten definiert wurden, zu aktualisieren.
Sie brauchen nur dlgRedisplay() aufrufen, wenn der Dialog während der Ausführung des Programmcodes aktualisiert werden soll. Im folgenden Beispiel wird der Status auf "Running..." gesetzt und dlgRedisplay() muss aufgerufen werden, um die Änderungen für die Ausführung des Programms wirksam zu machen. Nach dem Ändern des Status auf "Finished.", braucht man dlgRedisplay() nicht mehr aufrufen, da alle Dialog-Objekte nach dem Verlassen des Statements aktualisiert werden.
string Status = "Idle"; int Result = dlgDialog("Test") { dlgLabel(Status, 1); // note the '1' to tell the label to be updated! dlgPushButton("+OK") dlgAccept(42); dlgPushButton("Cancel") dlgReject(); dlgPushButton("Run") { Status = "Running..."; dlgRedisplay(); // some program action here... Status = "Finished."; } };
Die dlgReset-Funktion kopiert die ursprünglichen Werte in alle Dialog-Objekte des aktuellen dlgDialog zurück.
Alle Änderungen, die der Benutzer im Dialog machte, werden verworfen.
Ein Aufruf von dlgReject() impliziert einen Aufruf von dlgReset().
int Number = 1; int Result = dlgDialog("Test") { dlgIntEdit(Number); dlgPushButton("+OK") dlgAccept(42); dlgPushButton("Cancel") dlgReject(); dlgPushButton("Reset") dlgReset(); };
Die dlgReject-Funktion veranlasst, dass dlgDialog geschlossen wird und nach dem Beenden der aktuellen Statement-Sequenz zurückkehrt.
Jede Änderung, die der Benutzer im Dialog machte, wird verworfen. Die Variablen, die während der Definition der Dialog-Objekte übergeben wurden, werden auf Ihren ursprünglichen Wert zurückgesetzt.
Der optionale Wert für Result wird vom Dialog zurückgegeben. Typischerweise ist das 0 oder ein negativer Integer-Wert. Wird kein Wert angegeben, ist er standardmäßig 0.
Beachten Sie, dass dlgReject() wieder in die normale Programm-Routine zurückkehrt, wie in dieser Sequenz:
dlgPushButton("Cancel") { dlgReject(); dlgMessageBox("Rejecting!"); }Das Statement nach dlgReject() wird auch noch ausgeführt!
Der Aufruf von dlgReject() impliziert den Aufruf von dlgReset().
int Result = dlgDialog("Test") { dlgPushButton("+OK") dlgAccept(42); dlgPushButton("Cancel") dlgReject(); };
Dazu müssen Sie dem Zeichen einen Backslash voranstellen, so wie in
dlgLabel("Miller \\& Co.");Das Ergebnis wird im Dialog so aussehen: "Miller & Co."
Beachten Sie, dass hier in Wirklichkeit zwei Backslash-Zeichen verwendet wurden,
da diese Zeile erst durch den User-Language-Parser geht, der den ersten Backslash
abzieht.
Ein vollständiges Beispiel
Hier folgt ein vollständiges Beispiel eines User-Language-Dialogs:
int hor = 1;
int ver = 1;
string fileName;
int Result = dlgDialog("Enter Parameters") {
dlgHBoxLayout {
dlgStretch(1);
dlgLabel("This is a simple dialog");
dlgStretch(1);
}
dlgHBoxLayout {
dlgGroup("Horizontal") {
dlgRadioButton("&Top", hor);
dlgRadioButton("&Center", hor);
dlgRadioButton("&Bottom", hor);
}
dlgGroup("Vertical") {
dlgRadioButton("&Left", ver);
dlgRadioButton("C&enter", ver);
dlgRadioButton("&Right", ver);
}
}
dlgHBoxLayout {
dlgLabel("File &name:");
dlgStringEdit(fileName);
dlgPushButton("Bro&wse") {
fileName = dlgFileOpen("Select a file", fileName);
}
}
dlgGridLayout {
dlgCell(0, 0) dlgLabel("Row 0/Col 0");
dlgCell(1, 0) dlgLabel("Row 1/Col 0");
dlgCell(0, 1) dlgLabel("Row 0/Col 1");
dlgCell(1, 1) dlgLabel("Row 1/Col 1");
}
dlgSpacing(10);
dlgHBoxLayout {
dlgStretch(1);
dlgPushButton("+OK") dlgAccept();
dlgPushButton("Cancel") dlgReject();
}
};
Unterstützte HTML-Tags
EAGLE unterstützt eine Teilmenge von Tags (Steuerzeichen), die zum Formatieren von HTML-Seiten
verwendet werden.
Damit kann man Texte von einigen Objekten im User-Language-Dialog,
in der #usage-Directive oder in der Description
von Bibliotheks-Objekten formatieren.
Text wird zu HTML-Text, wenn die erste Zeile ein Tag enthält. Wenn das nicht der Fall ist und Sie den Text formatieren wollen, schließen Sie den ganzen Text in das <html>...</html> Tag ein.
Die folgende Tabelle listet alle unterstützten HTML-Tags mit ihren verfügbaren Attributen auf:
Tag | Beschreibung | |
<html>...</html> | Ein HTML-Dokument. Es versteht folgende Attribute
| |
<h1>...</h1> | Eine Haupt-Überschrift. | |
<h2>...</h2> | Eine untergeordnete Überschrift. | |
<h3>...</h3> | Eine weiter untergeordnete Überschrift. | |
<p>...</p> | Ein links-bündiger Abschnitt. Bestimmen Sie die Anordnung mit dem align Attribut. Mögliche Werte sind left, right und center. | |
<center>...</center> | Ein zentrierter Abschnitt. | |
<blockquote>...</blockquote> | Ein eingerückter Abschnitt, sinnvoll für Zitate. | |
<ul>...</ul> | Eine ungeordnete Liste. Sie können auch ein type-Argument angeben um einen Bullet-Style zu definieren. Default ist type=disc, andere Typen sind circle und square. | |
<ol>...</ol> | Eine geordnete Liste. Sie können auch ein type-Argument angeben um die Art der Nummerierung zu definieren. Default ist type="1", andere Typen sind "a" und "A". | |
<li>...</li> | Ein Punkt in einer Liste. Dieses Tag kann nur innerhalb eines ol oder ul Kontext verwendet werden. | |
<pre>...</pre> | Für größere Mengen von Code. Leerzeichen im Inhalt bleiben erhalten. Für kleinere Mengen Code, benutzen Sie den Inline-style code. | |
<a>...</a> | Ein Anker oder Link. Folgende Attribute sind erlaubt
| |
<em>...</em> | Emphasized (kursiv)(genauso wie <i>...</i>). | |
<strong>...</strong> | Stark (genauso wie <b>...</b>). | |
<i>...</i> | Kursiver Text. | |
<b>...</b> | Fetter Text. | |
<u>...</u> | Unterstrichener Text. | |
<big>...</big> | Eine größere Texthöhe. | |
<small>...</small> | Eine kleinere Texthöhe. | |
<code>...</code> | Kennzeichnet Code. (wie auch <tt>...</tt>. Für größere Mengen an Code, verwenden Sie das Block-Tag pre. | |
<tt>...</tt> | Typewriter Schriftart. | |
<font>...</font> | Zur Bestimmung von Texthöhe, Schrift-Familie und Textfarbe. Das Tag versteht folgende Attribute:
| |
<img...> | Ein Bild. Dieses Tag versteht die folgenden Attribute:
| |
<hr> | Eine waagrechte Linie. | |
<br> | Ein Zeilenumbruch. | |
<nobr>...</nobr> | Kein Zeilenumbruch.Erhält "Word Wrap". | |
<table>...</table> | Eine Tabellen-Definition.
Die Standardtabelle ist ohne Rahmen. Geben Sie das boolsche Attribut
border an um einen Rahmen zu erhalten. Andere Attribute sind:
| |
<tr>...</tr> | Eine Tabellen-Reihe. Kann nur mit table verwendet werden. Versteht die Attribute:
| |
<td>...</td> | Eine Zelle in einer Tabelle. Kann nur innerhalb tr verwendet werden.Versteht die Attribute:
| |
<th>...</th> | Eine "Header"-Zelle in der Tabelle. Wie td aber als default mit zentrierter Ausrichtung und fetter Schriftart. | |
<author>...</author> | Markiert den Autor des Texts. | |
<dl>...</dl> | Eine Definitions-Liste. | |
<dt>...</dt> | Ein Definitions-Tag. Kann nur innerhalb dl verwendet werden. | |
<dd>...</dd> | Definitions-Daten. Kann nur innerhalb dl verwendet werden. |
Tag | Bedeutung | |
< | < | |
> | > | |
& | & | |
| Leerzeichen ohne Umbruch | |
ä | ä | |
ö | ö | |
ü | ü | |
Ä | Ä | |
Ö | Ö | |
Ü | Ü | |
ß | ß | |
© | © | |
° | ° | |
µ | µ | |
± | ± |
.x#nDabei steht für 'x' der Buchstabe
b in Board-Dateien
s in Schaltplan-Dateien
l in Bibliotheks-Dateien
n steht für eine einstellige Zahl von 1..9. Höhere Ziffern zeigen ältere Dateien an.
Die feste Position des Zeichens '#' ermöglicht das einfache Löschen aller Backup-Dateien aus dem Betriebssystem heraus mit *.?#? als "Wildcard".
Bitte beachten Sie, dass Backup-Dateien mit derselben Ziffer 'n' nicht notwendigerweise konsistente Paare von Platinen- und Schaltplan-Dateien repräsentieren.
Die maximale Zahl von Backup-Kopien kann im Backup-Dialog gesetzt werden.
Diese Sicherungskopie erhält den Namen nach folgendem Schema:
.x##Dabei steht für 'x' der Buchstabe
b in Board-Dateien
s in Schaltplan-Dateien
l in Bibliotheks-Dateien
Die Sicherheits-Backup-Datei wird nach einem erfolgreichen Abspeichern der Zeichnung wieder gelöscht. Kann die Zeichnung nicht mit dem WRITE-Befehl gespeichert werden (z. B. aufgrund eines Stromausfalls), benennen Sie die Datei einfach um. So kann sie als normale Schaltplan-, Board- bzw. Bibliotheksdatei wieder geladen werden.
Die Sicherungsintervall kann im Backup-Dialog gesetzt werden.
Unter normalen Umständen sind Platine und Schaltplan immer konsistent,
sofern sie nicht separat editiert worden sind (in diesem Fall
würden Sie mit der Meldung
Die Forward&Back-Annotation ist nicht aktiv!
gewarnt worden sein).
Wenn ein Platinen/Schaltplan-Paar geladen wird, überprüft das Programm
Konsistenzmarkierungen in den Dateien, um zu sehen, ob sie noch
konsistent sind. Weisen diese Markierungen auf eine Inkonsistenz hin,
dann bietet Ihnen das Programm an, einen
Electrical Rule Check (ERC) auszuführen,
der beide Dateien überprüft.
Fällt die Prüfung positiv aus, werden die Dateien als konsistent markiert,
und die Forward&Back-Annotation wird aktiviert.
Werden die Dateien als inkonsistent erkannt, erscheint das ERC-Protokoll
in einem Dialog und die Forward&Back-Annotation wird
nicht aktiviert.
Bitte erschrecken Sie nicht, wenn zahlreiche Fehlermeldungen
erscheinen. In den meisten Fällen reduziert schon eine einzige Korrektur
(wie die Umbenennung eines Netzes) die Zahl der Meldungen für den
nächsten Durchlauf erheblich.
CadSoft Computer GmbH
Forward&Back-Annotation
Eine Schaltplandatei und die zugehörigen Platinendatei sind durch
automatische Forward&Back-Annotation logisch verknüpft. Der Benutzer muss
sich darum normalerweise nicht kümmern. Dennoch wird in diesem Abschnitt
beschrieben, was genau bei der Forward&Back-Annotation geschieht:
Konsistenzprüfung
Damit die Forward&Back-Annotation wirksam werden kann, müssen
Platine und Schaltplan konsistent sein. Das heisst, sie müssen äquivalente
Bauteile und Netze bzw. Signale enthalten.
Platine und Schaltplan konsistent machen
Um ein inkonsistentes Schaltplan-/Platinen-Paar konsistent zu machen,
müssem Sie alle im ERC-Protokoll aufgeführten Inkonsistenzen manuell
beseitigen.
Das kann mit Hilfe der Editor-Befehle wie
NAME,
VALUE,
PINSWAP,
REPLACE etc. erreicht werden.
Nach der Korrektur müssen Sie den
ERC-Befehl nochmals verwenden,
um die Dateien zu überprüfen und um die Forward&Back-Annotation aktivieren
zu können.
Einschränkungen
Folgende Aktionen sind in einer Platine nicht erlaubt, wenn die
Back-Annotation aktiv ist, wenn also der Schaltplan ebenfalls geladen ist:
Sollten Sie eine dieser Operationen auszuführen versuchen, dann erhalten
Sie eine Meldung, dass dies unter Kontrolle der Back-Annotation nicht
möglich ist. Bitte führen Sie die Operation dann im Schaltplan aus, sie
wird dann automatisch in die Platine übernommen. Sollten Sie die
Operation dennoch im Board ausführen wollen, müssen Sie das
Schaltplan-Fenster schließen. In diesem Fall sind Schaltplan und Board
aber nicht mehr konsistent!
Technische Unterstützung
Als registrierter EAGLE-Benutzer erhalten Sie von CadSoft kostenlose
technische Unterstützung. Es gibt folgende Möglichkeiten, uns zu
erreichen oder die neuesten Programmversionen, Bibliotheken und Treiber
zu erhalten:
Pleidolfweg 15
84568 Pleiskirchen
Deutschland
Vertrieb | 08635-6989-10 | |
Hotline | 08635-6989-30 | |
Fax | 08635-6989-40 | |
support@cadsoft.de | ||
URL | www.cadsoft.de |
Unter Mac OS X finden Sie diese Angaben unter "EAGLE/Über EAGLE". |
Es gibt verschiedene Lizenz-Typen, die sich darin unterscheiden, wie viele Benutzer erlaubt sind und wo das Programm verwendet werden darf.
Ein typischer Anwender einer Einzelplatz-Lizenz ist jemand, der einen fest installierten PC und zusätzlich einen Notebook-Computer hat, den er unterwegs benutzt. Da er immer nur einen Computer benutzt, reicht die Einzelplatz-Lizenz aus.
Hierzu geben Sie im Dialog "EAGLE Lizenz" den Dateinamen Ihrer EAGLE-Lizenzdatei ein, sowie den dazugehörigen Installations-Code, den Sie zusammen mit der Lizenzdatei erhalten haben (dieser Code besteht aus zehn Kleinbuchstaben).
Nach dem Betätigen der Enter-Taste oder dem Anklicken des OK-Buttons ist EAGLE mit Ihren persönlichen Lizenzdaten installiert.
Wenn Sie Probleme mit der Installation haben oder über die Gültigkeit Ihrer Lizenz im Zweifel sind, setzen Sie sich bitte mit unserem Technischen Support in Verbindung.
Falls Sie eine Fehlermeldung der Form
Die Light-Edition von EAGLE kann die gewünschte Aktion nicht ausführen!
erhalten, so bedeutet dies, dass Sie versucht haben, etwas zu tun, das im Widerspruch zu den Einschränkungen der benutzten EAGLE-Edition steht, wie etwa ein Bauteil ausserhalb der zulässigen Fläche zu plazieren.
Sowohl die Standard als auch die Light Edition von EAGLE ist in der Lage, Dateien zu laden, die mit der Professional Edition erzeugt wurden, selbst wenn diese Zeichnungen die Editier-Möglichkeiten der verwendeten Edition übersteigen.
Um zu sehen, welcher Edition Ihre Lizenz entspricht, wählen Sie Hilfe/Über EAGLE aus dem Menü des Control Panels.