EAGLE Help Version 9.6.2 Copyright © 2020 Autodesk, Inc. All rights reserved Copyright

Index

Erklärung der Hilfe-Funktion

Ist in einem
Layout-Editor-, Schaltplan-Editor-, oder Bibliotheks-Editor-Fenster ein Befehl aktiviert, dann wird nach Drücken der F1-Taste oder Eintippen von HELP die Hilfe-Seite für diesen Befehl aufgerufen.

Die Erklärung eines Befehls kann auch durch die Eingabe von

HELP befehl
aufgerufen 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.

EAGLE konfigurieren

Die folgenden Editor-Befehle können dazu verwendet werden, EAGLE individuell anzupassen. Sie können entweder direkt von der Kommandozeile eines Editor-Fensters eingegeben werden oder man kann Sie in die Datei
eagle.scr eintragen.

Für die Befehle ASSIGN und SET existieren auch Dialoge, die über das Options-Menü der Editor-Fenster aufgerufen werden.

Benutzer-Interface

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..;
SET DLINE_WIDTH_MENU value..;
SET DLINE_EXT_WIDTH_MENU value..;
SET DLINE_EXT_LENGTH_MENU value..;
SET DLINE_EXT_OFFSET_MENU value..;
Kontextmenüs SET CONTEXT type text commands;
Line/Wire Bend SET WIRE_BEND bend_nr;
Beep ein/aus SET BEEP OFF | ON;
Group Annotations SET GROUP_ANNOTATIONS OFF | ON | HOVERONLY;

Bildschirmdarstellung

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;

Mode-Parameter

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;
Line/Wire-Optimierung SET OPTIMIZING OFF | ON;
Netz-Linien beenden SET AUTO_END_NET OFF | ON;
Automatische Junctions SET AUTO_JUNCTION OFF | ON;

Routing Modi

Single Layer Modus SET SINGLE_LAYER_MODE OFF | ON;
Obstacle Modus SET OBSTACLE_MODE IGNORE | WALKAROUND | PUSH;
Loop Removal SET LOOP_REMOVAL OFF | ON;

Voreinstellungen

Pad-Form CHANGE SHAPE shape;
Linienbreite 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;
Text-Ausrichtung CHANGE ALIGN align;
Polygon-Parameter CHANGE THERMALS OFF | ON;
Polygon-Parameter CHANGE ORPHANS OFF | ON;
Polygon-Parameter CHANGE ISOLATE distance;
Polygon-Parameter CHANGE POUR SOLID | HATCH | CUTOUT;
Polygon-Parameter CHANGE RANK value;
Polygon-Parameter CHANGE SPACING distance;
Bemaßungsart CHANGE DTYPE value;

Kommandozeilen-Optionen

EAGLE kann mit Kommandozeilen-Optionen aufgerufen werden. Dazu ist folgendes Format erforderlich:
eagle [ Optionen [ Dateiname [ Layer ] ] ]
Unter Windows steht EAGLE auch als Konsolenapplikation 'eaglecon.exe' zur Verfügung (s.u.).

Optionen

-Axxx Bestückungsvariante
-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
-Uxxx Datei für Benutzereinstellungen
-Wxxx Blenden-Datei
-X- CAM-Prozessor ausführen
-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
-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 aus
Bei 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:
-ecfm Blenden-Emulation ein, positive Koordinaten ein, Pads ausfüllen ein, Ausgabe spiegeln
-ec-f+ Blenden-Emulation ein, positive Koordinaten aus, Pads ausfüllen ein

Benutzereinstellungen

Benutzerdefinierte Einstellungen werden in der Datei eaglerc gespeichert, die standardmäßig unter $CACHE_DIR/settings/X.Y.Z/eaglerc versions-spezifisch abgelegt wird. Beim ersten Start einer neuen EAGLE-Version wird der Anwender gefragt, ob Einstellungen von einer Vorgängerversion importiert werden sollen, wenn verfügbar. $CACHE_DIR ist abhängig vom Betriebssystem: c:\Users\$UserName\AppData\Roaming\Eagle\settings\X.Y.Z\eaglerc/Users/$UserName/Library/Application Support/Eagle/settings/X.Y.Z/eaglerc/home/$UserName/.local/share/Eagle/settings/X.Y.Z/eaglerc
Windows
MacOS
Linux
Dabei ist:
  • $UserName - Benutzername
  • X.Y.Z - EAGLE-Version. Zum Beispiel: 9.1.0.

  • Mit der Kommandozeilen-Option -U kann eine beliebige andere Datei angegeben werden. Beispiel:
    C:/EAGLE-9.1.0/eagle.exe -UC:/Settings/eaglerc5.usr

    Wird als Dateiname das Zeichen '-' angegeben, wie in -U-, so wird keine eaglerc-Datei gelesen bzw. geschrieben.

    Toleranzen definieren

    Ohne '+'- oder '-'-Zeichen gilt eine Toleranzangabe für beide Richtungen:
    -D0.10 stellt Draw-Toleranz auf ±10% ein
    -D+0.1 -D-0.05 stellt Draw-Toleranz auf +10% und -5% ein

    Befehle ausführen

    Wird ein Befehl über die Option '-C' angegeben, wie etwa
    eagle -C "window (1 1) (2 2);" myboard.brd
    
    so 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':

    Um EAGLE zu starten ohne automatisch die Datei eagle.scr auszuführen oder ein Projekt zu laden, kann der Befehl auch leer sein:
    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.

    Dateiname

    Falls der angegebene Dateiname eagle.epf ist (evtl. mit vorangestelltem Verzeichnisnamen), so lädt EAGLE diese Projekt-Datei. Ansonsten wird, falls keine Dateinamenserweiterung angegeben ist, .brd als Default verwendet.

    Konsolen-Applikation (eaglecon.exe)

    Um EAGLE unter Windows von einer Konsole aus betreiben zu können (z.B. um einen Batch-Job für die CAM-Ausgabe zu erstellen), können Sie die 'eaglecon.exe' verwenden. eaglecon.exe befindet sich ebenfalls im Ordner 'bin', ist identisch mit eagle.exe, hält aber die Verbindung zur Konsole aufrecht.

    Wichtiger Hinweis zum Schließen:
    Bitte beenden Sie immer zuerst EAGLE, bevor Sie die Konsole schliessen! Das vorherige Schliessen der Konsole bewirkt sonst ein unkontrolliertes "Abschiessen" von EAGLE, so daß ungespeicherte Änderungen verloren gehen können usw. Das gleiche Problem tritt auf wenn Sie über die Taskleiste die EAGLE-Fenster als als Gruppe schliessen oder nur gezielt das Konsolen-Fenster.

    Schnelle Einführung

    Um schnell mit EAGLE zurechtzukommen, sollten Sie mehr über folgende Themen wissen:

    Control Panel und Editor-Fenster

    Vom
    Control Panel aus können Sie über das Datei-Menü oder durch Anklicken eines Icons die Fenster des Schaltplan-, Layout- und Bibliotheks-Editors öffnen.

    Eingabe von Parametern und Werten

    Parameter und Werte können über die EAGLE-Kommandozeile oder, wesentlich bequemer, über die Parameter-Toolbar eingegeben werden, die erscheint, wenn ein Befehl aktiviert ist. Da dies keiner großen Erklärung bedarf, wird an anderen Stellen im Hilfe-Text nicht explizit darauf hingewiesen.

    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.

    Symbole plazieren

    Bibliotheken mit USE laden und Symbole plazieren (siehe ADD, MOVE, DELETE, ROTATE, NAME, VALUE). Fehlt ein bestimmtes Bauelement, dann mit Bibliotheks-Editor definieren.

    Busse einzeichnen

    Busse mit BUS einzeichnen. Geben Sie den Bussen Namen (NAME), aus denen hervorgeht, welche Signale sich herausführen lassen.

    Netze einzeichnen

    Die Verbindungen zwischen den Pins der Elemente definiert man mit NET. Dargestellt werden Netze im Net-Layer. Mit dem Befehl JUNCTION kennzeichnet man Verbindungen sich kreuzender Netze.

    Hierarchischen Schaltplan entwerfen

    Hierarchischen Schaltplan entwerfen

    Hierarchischen Schaltplan entwerfen

    Hierarchischen Schaltplan entwerfen

    Ein hierarchischer Schaltplan wird durch Module gebildet. Ein Modul wird durch den
    MODULE-Befehl erzeugt. Module können auch über mehrere Schaltplanseiten gehen.

    Module verwenden

    Im Schaltplan wird ein Modul durch eine Modul-Instanz referenziert. Es kann mehrere Modul-Instanzen desselben Moduls geben.

    Modul-Instanzen anschließen

    Anschlusspunkte für Modul-Instanzen werden durch PORTs definiert.

    Schaltplan überprüfen

    Electrical Rule Check (
    ERC) durchführen und anhand der Meldungen Fehler korrigieren. Eventuell Netz- und Pin-Liste ausgeben (EXPORT). Mit dem SHOW-Befehl Netze am Bildschirm verfolgen.

    Platine aus Schaltplan erzeugen

    Mit dem
    BOARD-Befehl bzw. durch Anklicken des Board-Icons erzeugen Sie eine Platine aus dem geladenen Schaltplan (falls noch keine Platine mit demselben Namen existiert).

    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.

    Platinenumrisse und Plazierung festlegen

    Gegebenenfalls die Leerplatine in Größe und Form verändern (MOVE, SPLIT). Elemente an gewünschte Position verschieben (MOVE) und überprüfen, ob die Plazierung günstig oder ungünstig ist (RATSNEST).

    Sperrflächen definieren

    Falls gewünscht, zeichnet man Sperrflächen für den Autorouter als Rechtecke, Polygone oder Kreise in die Layer tRestrict, bRestrict und vRestrict (siehe RECT, POLYGON, CIRCLE). Für den Autorouter begrenzen auch geschlossene Linienzüge im Dimension-Layer die Route-Fläche.

    Routen

    Mit dem ROUTE-Befehl lassen sich jetzt die Luftlinien in Leitungen umwandeln. Diese Aufgabe kann man auch dem Autorouter (siehe Befehl AUTO) zuweisen.

    Layout überprüfen

    Design Rule Check (
    DRC) durchführen und Fehler korrigieren (ERRORS). Eventuell Netz-, Bauteile- und Pin-Liste ausgeben (EXPORT).

    Bauelement in Bibliothek definieren

    Die Definition eines Bauelements erfordert drei Schritte, die aufeinander aufbauen.

    Öffnen Sie eine Bibliothek mit Öffnen oder Neu im Datei-Menü.

    Package definieren

    Packages sind die Gehäuse der Bauelemente, die im Board dargestellt werden.

    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 (LINE-Befehl) in die entsprechenden Layer.

    Symbol definieren

    Symbole sind der Teil eines Devices, das im Schaltplan dargestellt wird.

    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 (LINE-Befehl) in die entsprechenden Layer.

    Device definieren

    Ein Device enthält die Definition eines gesamten Bauelements einschließlich Gehäuse und Schaltplan-Symbol(e).

    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.

    Kontext-Menü

    Das Kontext-Menü eines Eintrags in der Baumstruktur erreichen Sie mit einem rechten Mausklick auf den entsprechenden Eintrag. Es enthält dann spezielle Punkte zu diesem Eintrag.

    Beschreibungen

    Die Beschreibung-Spalte der Baumansicht enthält eine Kurzbeschreibung des Eintrags (wenn vorhanden). Diese Beschreibungen werden aus der ersten nicht leeren Textzeile der folgenden Quellen erzeugt:

    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-ProgrammeText, durch die #usage-Anweisung gekennzeichnet
    Script-Dateien Der Kommentar am Anfang der Script-Datei
    CAM-Jobs DESCRIPTION-Befehl im CAM-Prozessor-Job

    Drag&Drop

    Sie können mit Hilfe von Drag&Drop Dateien und Verzeichnisse innerhalb der Baumstruktur kopieren oder bewegen. Es ist auch möglich, ein Device oder ein Package in das Schaltplan-, Layout- bzw. Library-Fenster zu ziehen und dort zu plazieren. Zieht man User-Language-Programme und Script-Dateien auf ein Editor-Fenster, werden sie darin ausgeführt. Design Rules werden einem Layout zugeordnet, wenn Sie einen entsprechenden Eintrag in das Layout-Editor-Fenster ziehen. Ziehen Sie eine Board-, Schaltplan- oder Library-Datei auf das jeweilige Editor-Fenster, so wird die Datei in den Editor geladen. All diese Funktionen erreichen Sie auch über das Kontext-Menü des entsprechenden Eintrags in der Baumstruktur.

    Informations-Fenster

    In der rechten Hälfte des Control Panels werden Informationen zum selektierten Punkt in der Baumstruktur angezeigt. Diese Informationen werden aus den Quellen erzeugt, die unter Beschreibungen angegeben sind. Bei Device und Package erhält man eine Voransicht des Elements.

    Menü-Leiste

    Die Menü-Leiste des Control Panels enthält folgende Punkte:

    Datei

    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ßenSchließt das aktuelle Projekt
    Beenden Beendet das Programm

    Ansicht

    AktualisierenAktualisiert den Inhalt der Baumansicht
    SucheSucht im Inhalt der Baumansicht (siehe unten)
    Sortieren Ändert die Sortierung der Baumansicht

    Optionen

    Verzeichnisse... Öffnet den Verzeichnis-Dialog
    Sicherung... Öffnet den Sicherungs-Dialog
    Benutzeroberfläche... Öffnet den Benutzeroberfläche-Dialog
    Datensammlung und Verwendung... Öffnet den Dialog Datensammlung und Verwendung
    Proxy-Einstellungen... Öffnet den Dialog für Proxy-Einstellungen

    Fenster

    Control Panel Zum Control Panel wechseln
    1 Schaltplan - ... Zu Fenster 1 wechseln
    2 Board - ... Zu Fenster 2 wechseln

    Hilfe

    Allgemein Öffnet eine allgemeine Hilfe-Seite
    Kontext Öffnet die Hilfe-Seite für den momentanen Kontext
    Control Panel Öffnet diese Hilfe-Seite
    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

    Suchleiste

    Das Suchmuster kann aus einem oder mehreren Wörtern, getrennt durch Leerzeichen, bestehen. Nach diesen Begriffen wird in den Namen und Beschreibungen der Baumansicht unabhängig von Groß- und Kleinschreibung gesucht. Es müssen alle Begriffe gefunden werden. Der Platzhalter '*' steht für eine beliebige Anzahl von sichtbaren Zeichen, während '?' für exakt ein sichtbares Zeichen steht. Um einen Platzhalter selbst zu suchen, muss diesem ein Backslash vorangestellt werden, wie in '\*'. Um die Suche auf einen bestimmten Zweig der Baumansicht zu beschränken, muss die Suche in dessen Kontextmenü gestartet werden. Um z.B. ein NAND-Bauteil der 74xx-Serie zu finden, geben Sie ein: 74* nand

    Statuszeile

    Die Statuszeile unten im Control Panel enthält den vollständigen Namen des gegenwärtig selektierten Objektes.

    Kontext-Menüs

    Ein Klick mit der rechten Maustaste auf ein Objekt des
    Control Panels öffnet ein Kontext-Menü das folgende Aktionen ermöglicht (nicht alle davon sind für alle Objekte zutreffend):

    Neuer Ordner

    Erzeugt ein neues Verzeichnis unterhalb des selektierten Ordners und schaltet den neu erzeugten Zweig der Baumansicht in den Umbenennen-Modus, so dass der gewünschte Name vergeben werden kann.

    Beschreibung editieren

    Lädt die DESCRIPTION-Datei in den HTML-Editor.

    Umbenennen

    Schaltet den Eintrag der Baumansicht in den Editier-Modus, so dass er umbenannt werden kann.

    Kopieren

    Öffnet einen Datei-Dialog in dem Sie den neuen Namen der zu kopierenden Datei bzw. des Verzeichnisses angeben. Dateien oder Verzeichnisse kann man auch mit Hilfe von Drag&Drop kopieren.

    Löschen

    Löscht die Datei oder das Verzeichnis. Sie werden vor dem Löschen gefragt, ob wirklich gelöscht werden soll.

    Use

    Ist eine Bibliothek als in use markiert, werden die Devices und Packages darin von der Suchfunktion berücksichtigt. Sie können auch durch einen Mausklick auf den Marker in der zweiten Spalte der Baumansicht die Bibliothek freigeben oder nicht.

    Alle Bibliotheken laden

    Alle Bibliotheken im Bibliothekspfad werden bei der Suche nach Devices und Packages berücksichtigt, d. h. alle Bibliotheken sind in use.

    Keine Bibliothek laden

    Keine der Bibliotheken ist in use (einschließlich der Bibliotheken, die nicht im Bibliothekspfad stehen).

    Update

    Tauscht alle Bauteile des geladenen Schaltplans oder Layouts, die aus dieser Bibliothek genommen wurden gegen die aktuelle Bauteile-Definition aus.

    Update in Bibliothek

    Tauscht alle in der geladenen Bibliothek verwendeten Gehäusedefinitionen gegen den aktuellen Stand aus dieser Bibliothek aus.

    In Schaltplan einfügen

    Startet den ADD-Befehl im Schaltplan-Editor für dieses Device. Das ist auch über Drag&Drop möglich.

    In Platine einfügen

    Startet den ADD-Befehl im Layout-Editor für dieses Package. Das ist auch über Drag&Drop möglich.

    In Bibliothek kopieren

    Kopiert das selektierte Device-Set oder Package in die geladene Bibliothek. Das ist auch über Drag&Drop möglich.

    Neue Package-Variante in der Bibliothek

    Erzeugt eine neue Package-Variante mit dem selektierten Package im aktuellen Device-Set der geladenen Bibliothek. Das ist auch über Drag&Drop möglich.

    Projekt öffnen/schließen

    Öffnet oder schließt ein Projekt. Dazu können Sie auch auf den Marker rechts vom Projekt-Eintrag in der Baumansicht klicken.

    Neu

    Öffnet ein Fenster mit der neuen Datei des entsprechenden Typs.

    Öffnen

    Öffnet ein Editor-Fenster mit dieser Datei. Das ist auch mit über Drag&Drop möglich.

    Drucken...

    Druckt die Datei auf dem System-Drucker aus. Weitere Informationen zur Benutzung der Druck-Dialoge entnehmen Sie bitte dem Kapitel Drucken auf dem System-Drucker.

    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.

    Im ... ausführen

    Startet das gewählte User-Language-Programm bzw. Script im aktuellen Schaltplan, Board oder in der Bibliothek. Das ist auch über Drag&Drop möglich.

    Im Board laden

    Lädt diesen Satz von Design Rules für das aktuelle Board. Das ist auch überDrag&Drop möglich.

    Verzeichnisse

    Mit dem Verzeichnisse-Dialog definiert man die Pfade, in denen nach Dateien gesucht werden soll.

    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.
    Wird einer der Befehle
    OPEN, USE, SCRIPT oder RUN eingegeben, dann werden diese Pfade durchsucht, mit Priorität von links nach rechts. Wird der Datei-Dialog benutzt um eine Datei eines dieser Typen anzusprechen, so wird das Verzeichnis, in das der Anwender mittels des Datei-Dialogs navigiert hat, implizit an das Ende des jeweiligen Pfades angehängt.

    Die Example-Verzeichnisse enthalten Referenz-Projekte. Die Auswahl-Option "Include EAGLE examples" steuert deren Sichtbarkeit. Alle installierten Quellen und Beispiele sind im "Nur-lesen"-Modus.

    Die Variablen $HOME und $EAGLEDIR werden verwendet, um das Home-Verzeichnis des Benutzers bzw. das EAGLE-Programm-Verzeichnis anzugeben.
    Unter Windows wird der Wert für $HOME entweder durch die Umgebungsvariable EAGLE_HOME (falls gesetzt) oder durch den Wert des Registry-Eintrags "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal", der den aktuellen Namen des "Dokumente"-Ordners festlegt, definiert.
    Alle Dateien werden im Verzeichnis $HOME\EAGLE abgespeichert.


    Unter MacOS und Linux wird der Wert für $HOME entweder durch die Umgebungsvariable EAGLE_HOME (falls gesetzt) oder die Umgebungsvariable HOME festgelegt. Ist keine dieser Variablen gesetzt, entspricht $HOME dem Verzeichnis $EAGLEDIR.
    Alle Dateien werden im Verzeichnis $HOME\Documents\EAGLE abgespeichert.

    Datensicherung

    Der Datensicherung-Dialog ermöglicht es Ihnen, den automatischen Backup individuell einzustellen.

    Max. Anzahl der Sicherungskopien

    Definiert wie viele Backup-Kopien Ihrer EAGLE-Dateien "aufgehoben" werden wenn eine Datei normal mit dem WRITE-Befehl abgespeichert wird (Default: 9).

    Intervall f. automat. Sicherung (Minuten)

    Bestimmt das Zeitintervall nachdem EAGLE automatisch eine Sicherungskopie aller modifizierten Zeichnungsdateien erzeugt (default ist 5 min.).

    Projektdatei automatisch sichern

    Ist diese Option gewählt, werden Ihre Projekteinstellungen automatisch gesichert, wenn Sie das Programm verlassen. Bitte beachten Sie, dass das momentan geöffnete Projekt nicht abgespeichert wird, wenn Sie diese Option ausschalten, was zur Folge hat, dass die Einstellung nicht nicht in der eagle.epf-Datei des Projekts gespeichert wird. Daher ist diese Option wieder eingeschaltet, wenn Sie das Projekt das nächste Mal öffnen. Wenn Sie wollen, dass diese Option für das aktuelle Projekt ausgeschaltet bleibt, müssen Sie manuell "Datei/Alles speichern" aus dem Pulldown-Menü wählen, nachdem Sie die Option ausgeschaltet haben.

    Benutzeroberfläche

    Der Benutzeroberfläche-Dialog ermöglicht es, das Erscheinungsbild der
    Editor-Fenster für Layout, Schaltplan und Bibliothek den eigenen Vorstellungen anzupassen.

    Symbolleisten und Menüs

    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

    Layout

    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

    Schaltplan

    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
    Group Annotations selects display of group annotations off, on or hover only

    Hilfe

    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

    Misc

    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)

    Datensammlung und Verwendung

    Der Datensammlung und Verwendung-Dialog erlaubt Einstellungen zum Datenschutz.

    Mögliche Einstellungen:

    Anonyme Analysen erlaubt anonyme Datenberichte
    Kommunikation erlaubt Email-Kommunikation mit dem Anwender

    Proxy-Einstellungen

    Im Proxy-Einstellungen-Dialog kann man Proxy-Server angeben. Standardmäßig nutzt EAGLE die System-Proxy-Einstellungen.

    Mögliche Proxy-Typen:

    System-Einstellungen verwenden EAGLE verwendet die System-Einstellungen
    Kein Proxy nutzt direkte Verbindungen
    HTTP ein transparenter HTTP Proxy wird verwendet
    SOCKS5 Socks5 Proxy wird verwendet

    Optionen:

    Server Host-Name des Proxys
    Port Port des Proxys
    Proxy-Server erfordert Passwortermöglicht Proxy-Authentifizierung
    Benutzername Benutzername für die Proxy-Authentifizierung
    Passwort Passwort für die Proxy-Authentifizierung

    Einstellungen testen

    Testet die Verbindung zum Server mit den Proxy-Einstellungen und einem 30 Sekunden Timeout. Der Countdown und das Ergebnis werden neben der Schaltfläche angezeigt.

    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.

    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 benutzen müssen, um das Internet anzusprechen, so können Sie diesen auch im Konfigurationsdialog angeben. Geben Sie dazu im Feld "Host" den vollen Namen des Proxy-Rechners ein, ohne etwaigen http://-Präfix, und im Feld "Port" eine optionale Port-Nummer.

    Falls Sie auch über Betaversionen von EAGLE informiert werden möchten, so können sie die Option "Auch auf Betaversionen prüfen" einschalten.

    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.

    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.

    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 Knickwinkel unterstützen, wie etwa LINE).

    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.

    Shift

    Wird die Shift-Taste zusammen mit der rechten Maustaste gedrückt so wird die Richtung des Weiterschaltens des Knickwinkels umgekehrt (dies betrifft nur Befehle die Knickwinkel unterstützen, wie etwa LINE).

    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.

    Esc

    Wird bei einem aktiven Befehl die Esc-Taste gedrückt, so wird die aktuelle Aktion dieses Befehls beendet, ohne dass der gesamte Befehl abgebrochen wird (falls die Kommandozeile Text enthält so wird dieser zuerst gelöscht und der nächste Druck auf die Esc-Taste wirkt auf den Befehl). Für den MOVE-Befehl zum Beispiel bedeutet dies, dass ein am Mauszeiger befindliches Objekt "fallengelassen" wird und ein anderes Objekt selektiert werden kann.

    Crsr-Up/Down

    Die Tasten Crsr-Up (Pfeil nach oben) bzw. Crsr-Down (Pfeil nach unten) erlauben es in der Kommandozeile des Editor-Fensters früher eingegeben Befehlszeilen wieder herzuholen ("History-Funktion").

    Funktionstasten

    Beliebige Kommandos können mit dem ASSIGN-Befehl auf Funktionstasten gelegt werden.

    Linke Maustaste

    Die linke Maustaste dient generell zum Selektieren, Zeichnen und Plazieren von Objekten.

    Mittlere Maustaste

    Die mittlere Maustaste wechselt den aktuellen Layer oder spiegelt das am Mauszeiger hängende Objekt.

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

    Click&Drag mit der mittleren Maustaste verschiebt die Zeichnung innerhalb des Editor-Fensters.

    Rechte Maustaste

    Die rechte Maustaste wird im Wesentlichen dazu verwendet, eine Gruppe zu selektieren, am Mauszeiger hängende Objekte zu rotieren, den Knickwinkel zu ändern sowie für einige andere, befehlsspezifische Funktionen.

    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 Knickwinkel ändern
    CHANGE Change auf Gruppe anwenden
    DELETE Gruppe löschen
    GROUP Polygon schließen
    INVOKE Gatter drehen
    LABEL Label drehen
    LINE Knickwinkel ändern
    MIRROR Gruppe spiegeln
    MOVE Objekt drehen bzw. Gruppe selektieren
    NET Knickwinkel ändern
    PAD Pad drehen
    PASTE Gruppe drehen
    PATTERN Vervielfältigt und platziert ein gewähltes Objekt in einer linearen oder zirkularen Struktur.
    PIN Pin drehen
    POLYGON Knickwinkel ändern
    RIPUP Ripup auf Gruppe anwenden
    ROTATE Gruppe drehen
    ROUTE Knickwinkel ändern
    SMD Smd drehen
    SPLIT Knickwinkel ändern
    TEXT Text drehen

    Maus-Rädchen

    Innerhalb eines Editor-Fensters kann mit dem Maus-Rädchen die Zoomstufe verändert werden.

    Benachbarte Objekte selektieren

    Wenn Sie an einer Stelle ein Objekt selektieren wollen, an der mehrere Objekte eng beieinander liegen, nimmt der Mauszeiger die Form eines Vierfach-Pfeils an, und es erscheint die Frage

    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.

    Bibliotheks-Editor

    Der Bibliotheks-Editor dient dazu, Bauelemente-Bibliotheken (*.lbr) zu editieren.

    Nach dem Öffnen des Bibliotheks-Editor-Fensters zeigt die Arbeitsfläche das Inhaltsverzeichnis der Bibliothek; je eine Liste der Devices, Packages und Symbole in dieser Bibliothek. Von hier aus kann man die Devices, Packages und Symbole verwalten: Zum Editieren öffnen, Umbenennen, Löschen, Duplizieren usw. Mit einem Klick auf eine der Schaltflächen Add unter der jeweiligen Liste kann man neue Devices, Packages und Symbole anlegen oder von einer anderen Bibliothek importieren.

    Bibliotheks-Objekt editieren

    Im Bibliothekseditier-Modus kann man Devices, Packages und Symbole editieren

    Package: Die Gehäuse-Bauform.

    Symbol: Das Schaltplan-Symbol.

    Device: Definition des vollständigen Bauteils. Besteht aus ein oder mehreren Packages und ein oder mehreren Symbolen. Die Symbole können unterschiedlich sein (z.B. verschiedene Gatter).

    Mit einem Klick auf eines der Devices-, Packages- oder Symbols-Tabs werden die entsprechenden Objekte gezeigt.

    Wenn Sie ein neues Objekt anlegen möchten, schreiben Sie den Namen des neuen Objekts in die Zeile Neu. Sie können auch den Namen eines bereits existierenden Objekts angeben und dieses editieren.

    Um ein bestehendes Objekt aus einer anderen Bibliothek zu importieren, wählen Sie das entsprechende Tab im Dialog und klicken Sie unten auf die Schaltfläche Import.... Es öffnet sich ein neues Fenster, das alle Devices, Packages und Symbole der Bibliotheken, die zur Zeit benutzt werden (also "in use" sind) zeigt. Wählen Sie das Objekt, das Sie importieren wollen und klicken Sie OK. Das Objekt wird in die geöffnete Bibliothek kopiert und zum Editieren geöffnet. Beachten Sie, dass beim Importieren eines Devices auch alle zugehörigen Packages und Symbole importiert werden.

    Layout-Editor

    Der Layout-Editor dient dazu, Layouts (*.brd) zu editieren.

    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.

    Schaltplan-Editor

    Der Schaltplan-Editor dient dazu, Schaltpläne (*.sch) zu editieren.

    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.

    Text-Editor

    Der Text-Editor dient dazu, Textdateien zu editieren.

    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.

    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.

    In diesem Befehl werden die folgenden Platzhalter durch aktuelle Werte ersetzt:

    %Cdie Spalte, in die der Cursor positioniert werden soll (zur Zeit immer 1)
    %Fder Name der zu ladenden Datei
    %Ldie 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:

    Editor Panels

    The editor panels provide a flattened overview of pertinent settings and data, without requiring you to traverse a hierarchy of properties dialogs. Use the "View" section to launch editor panels that you have closed. When you open an editor panel, the system presents the panel in the location and state in which you last viewed it. Use the mouse to click, drag, and drop editor panels to free-floating locations, to dock them along the border of the editor window or to tab-overlay them.

    Inspector

    Use the Inspector to edit object properties inside the current editor. The inspector is avaible in schematic, board, symbol and package.

    When using the GROUP command to select one or more objects in the design, the inspector will automatically update itself to reflect the properties of the selection. When you select a single object, the inspector will show all propertis of this object. However, when you select multiple objects, the inspector will show the common properties of these objects. If a variety of different types of object was selected, you can use the "Show Types" checkboxes to filter the shown properties to show only the properties of the sub-selection. When making a change to any of the properties through the inspector this change will be applied immediately to all selected objects.

    The Quick Actions allow immediately apply an action/command on the selection without switching context. It supports Rotate, Mirror, Replace, Delete, Ripup, Align operations, and more.

    When you have multiple objects selected in the editor, the system presents the Selected Objects table. This table allows you to verify the content of your selection, especially prior to performing a multi-object edit in the Inspector.

    The inspector allows you to directly edit Attributes from within the panel. You can rename, change the value, add or delete attributes. The changes will have immediate effect. When you select multiple objects that contain attributes, only the attributes that are common to all selected objects are presented in the Inspector. When you perform an attribute addition, the system adds the attribute to all selected objects. If a subset of the selection already has this attribute, the attribute value on this particular object will remain unchanged.

    The inspector can be controlled through the SET command: SET INSPECTOR OFF | ON | TOGGLE

    Selection Filter

    The selection filter allows you to reduce the ambiguity experienced when working in designs with a large number of objects.

    The Type Filter allows you to reduce the selection to only a subset of the available types. For example by highlighting rows "Wire" and "Via" only wires and vias will be selectable. When now invoking the MOVE command to start moving no more ambiguity will be experienced if for example a wire is overlapping with a device origin.

    The Layer Filter allows you to only allow selectability on a certain layer without touching the visiblity.

    Both the Type Filter as well as the Selection filter can be controlled using the SET command:

    The selection filter can be controlled through the SET command: SET SELECTION_FILTER OFF | ON | TOGGLE

    Sheets

    The sheets panel shows the availabe sheets inside the current schematic. It allows you to add/delete. Right-clicking will open the context menu which allows you to add and remove sheets as well as update their description.

    The sheets panel can be controlled through the SET command: SET SHEETS OFF | ON | TOGGLE

    Design Manager

    The Design Manager is a dockable panel that acts as a portal to several useful tools for use in your design. There are two main tabs, called the Browser and Filter tabs, and the Browser tab has multiple views, as detailed below.

    In Board, the Design Manager provides a similar interface as in schematic. There are two similarly named tabs, Browser and Filters. The Filters tab has exactly the same functionality as in schematic, only that there are a different set of Filter Criteria that are valid in that context, detailed in the help on the Filters tab below. It is noted that schematic and board Filters are saved separately, and are only loaded/valid in the appropriate context. Differences between schematic and board are noted in the sub pages below:

    Design Manager Tabs

    Browser The Browser tab includes multiple views (Parts, Nets, Groups, .. ) which can be selected from a dropdown.
    Filters The Filter tab provides a simple interface that allows for precise dynamic selections of design objects based on properties, memberships, type, and attributes. Filters can be saved in the design and/or in EAGLE settings.

    Browser Tab

    Browser Tab Views - Schematic

    Parts View

    The Parts view takes a component-centric look at the document contents, focusing on the parts contained in each sheet, and the items belonging to each individual part.

    Nets View

    The nets view gives a hierarchical set of panels allowing the user to see net information from the sheet level down to the segments and pin connections of individual nets.

    Browser Tab Views - Board

    Devices View

    The Devices view takes a component-centric look at the board, focusing on the devices placed on the Top and Bottom of the board and the items belonging to each.

    Signals View

    The signal view gives a hierarchical set of views allowing the user to drill down from the top level netclass, to signals, and to items associated with the selected signals (pads, smds, etc)

    Browser Tab Views - Schematic & Board

    Groups View

    The Groups view gives hierarchical view of groups in the design allowing the user to view and manipulate groups and group membership of the objects. For more about group operations, see NEWGROUP. There are two sections in groups view:

    Groups Section

    Items Section

    Double-clicking on any row in any section opens up the properties dialog for the object associated with that row.

    Whether and how to display group annotations can be defined by the SET command:
    SET GROUP_ANNOTATIONS OFF | ON | HOVER_ONLY

    See also NEWGROUP, EDITGROUP, UNGROUP

    Filters Tab

    Filter Tab

    Filters provides a method of defining precise dynamic selections of design objects based on type, properties, memberships, and attributes. For example, using filters the user can find all parts with a specific name pattern, or with a specific package type. You can also find all parts with specific pins, or for example all nets that belong to a specific bus. There are many options for the Filter Criteria used in Filter Expressions as described below.

    Filter Expressions

    Filters are made from combinations of simple Filter Criteria that are combined into true/false type (boolean) expressions using AND and OR logical operators.

    For example if the user wants to find all resistors in an 0603 package, they might setup the 3 criteria below:

    1. ObjectType = Part
    2. Name = R*
    3. HasFootprint 0603

    Since these all need to be TRUE to get the objects we want, the user would choose AND after the first and second criteria, resulting in the full filter expression:
    ((ObjectType = Part) AND (Name = R*) AND (HasFootprint 0603))
    .

    Filter Criteria are basic rules that can have 3 basic forms. Which form is used always depends only on the CriteriaType:
    TypeFormat Used For
    Binary
    (CriteriaType Operator Target)
    Binary criteria types with Operator and Target value (example: ObjectType = Part)
    Unary
    !(CriteriaType Target)
    Unary criteria types with Target and without Operator (example: (HasFootprint 0603), or !(HasFootprint 0603)), The ! is optional and the criteria is NOT true
    Keyword
    !(CriteriaType)
    Keyword criteria type with no Operator and no Target value (example: (IsLocked) or !(isLocked))

    Binary criteria format means there is an operator, and operands on both sides (i.e. ObjectType = Part).

    Unary format means there is a criteria type keyword and a target, but no operator in between (i.e. HasPin MOSI). There can be an optional negation operator ! meaning "not", (i.e. !(HasPin MOSI) means does not have a pin called MOSI).

    Keyword format means that there is a criteria type keyword and no target and no operators, except for optional negation operator in front (i.e. IsLocked, or !IsMirrored)

    Standard operators supported between the CriteriaType and the Target are =, !=, <, >, <=, >= . Note that not all operators are available for all CriteriaType. Some CriteriaTypes do not show any operators in the Filter Composer.

    Filter Composer


    The expression and all individual criteria can be fully configured using the Filter Composer Interface on the Filter Tab in Design Manager. For the experienced user, it can be efficient to type changes in the Filter Expression text field directly. Either workflow is valid and the expression and the Filter Composer interface are always kept in synchronization. If an invalid expression is entered into the Filter Expression text field, the interface will show "Invalid Expression", and the special colored highlighting will temporarily be disabled until the expression is made valid again. In this way the proper coloring of the Filter Expression serves to indicate its validity in addition to the information message in the bottom left corner of the application.

    It is important to note that filter criteria are always surrounded by parenthesis. The composer interface will always enforce this, but when typing expressions manually care should be taken to simply surround each filter criteria with opening and closing parenthesis. This serves to keep a standard format, and to offer more flexibility in expressions. For example ((Name = ) AND (Value = 100)) is actually valid since it has the meaning that the name is actually an empty string for the object (internally it will use an empty string). If parenthesis were not enforced it would be unclear where that criteria begins and ends.

    Supported Criteria Types and their Scope


    Some criteria types can only be used in certain editors, and some can be used in multiple editors. The table below shows the supported criterias types and the scope to which they are applicable.

    Condition Type Format Desc Scope
    ObjectType Binary Filter a specific type of object SCH and BRD
    Value Binary Filter on the Value property SCH and BRD
    Name Binary Filter on the Name property SCH and BRD
    DeviceName Binary Filter on the Device Name SCH
    Width Binary Filter based on the Width property SCH and BRD
    Length Binary Filter based on the Length property SCH and BRD
    PositionX Binary Filter based on the X coordinate of its position SCH and BRD
    PositionY Binary Filter based on the Y coordinate of its position SCH and BRD
    Rotation Binary Filter based on the Rotation angle, in degrees SCH and BRD
    PadCount Binary Filter board elements based on the number of pads BRD
    ViaShape Binary Filter vias based on shape BRD
    PadShape Binary Filter pads based on the shape BRD
    IsLocked Keyword Filter based on the Locked property BRD only
    IsMirrored Keyword Filter based on the Mirrored property SCH and BRD
    InNetClass Unary Filter based on Netclass property SCH and BRD
    InFilter Unary If an object is in the results of the filter specified, this will evaluate to TRUE. This functionality allows the user to create complex filters by combining other filters. SCH and BRD
    InLibrary Unary Test whether the part or element is from a particular library or not based on library Name SCH and BRD
    IsMemberOfBus Unary Test whether the wire is on a net that is part of the bus specified SCH and BRD
    IsSimReady Keyword Test whether the part/element has a SPICE simulation model mapping and is ready for simulation. SCH and BRD
    RequiresSpiceModel Keyword Test whether the part/element requires a model for simulation. SCH and BRD
    OnLayer Unary Test whether the object is on the specified layer BRD only
    InNet Unary Test whether the object is in the specified net SCH
    OnSignal Unary Test whether the object is on the specified signal BRD
    OnSheet Unary Test whether the object is on the specified sheet SCH
    InModule Unary Test whether the object is in the specified module SCH and BRD
    HasAttribute Unary Test if a part has an Attribute with the specified Name SCH and BRD
    HasSpiceModel Unary Test if a part has a SPICE model with the specified Name as the current active model, mapped either in library or schematic SCH and BRD
    HasFootprint Unary Test if a part has a particular type of footprint based on footprint Name SCH and BRD
    Has3DModel Keyword Test if a 3d model is attached SCH and BRD
    HasPin Unary Test if a part symbol has a Pin with a particular Name SCH and BRD
    HasPad Unary Test if a part footprint has a Pad with a particular Name SCH and BRD

    Criteria Targets

    Criteria Targets are shown in the Composer interface as either a dynamic dropdown (based on the criteria type and the design objects), a fixed dropdown (like True and False options), or a free-form textfield. Targets take the form of an object name or type, a value, property, or true/false value. The following rules are always enforced:

    Saving and Restoring Filters

    The filter tab includes a dropdown at the top that allows for loading saved filters. Filters that are saved in the design are shown, in addition to filters saved in EAGLE settings. If a saved filter is chosen from the dropdown, it will populate the Filter Composer interface, as well as the expression and name fields, and the filter will be run in the current editor.

    Whether starting from the default filter (i.e. ObjectType = Part), or a saved filter, the user can always make changes to the filter criteria and overall expression, either in the Composer interface or manually in the Expression field. User will be prompted if attempting to save over an existing filter in the same scope with the same name. Note that if the filter was created in schematic, it will be saved in the schematic, if in board, it will be saved in board, and some criteria types have a scope that is only valid in one or the other. Filters saved in design are completely seperate from filters saved in global settings, and names can be duplicated across the different scopes.

    Editor-Befehle

    Wechsel der Betriebsart/Dateibefehle

    CLOSE Bibliothek nach Editieren schließen
    EDIT Zeichnung laden/anlegen
    EXPORT ASCII-Liste erzeugen (z.B. Netzliste)
    EXPORTSTEP Exportiert das Layout in eine STEP-Datei
    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

    Zeichnungen/Bibliotheken editieren

    ADD Element in Zeichnung / Symbol in Device einfügen
    ALIGN Ordnet ausgewählte Objekte im Layout-Editor an
    ARC Kreisbogen zeichnen
    ATTRIBUTE Attribute definieren
    CIRCLE Kreis zeichnen
    CLASS Netzklassen definieren
    COPY Objekte/Elemente kopieren
    CUT Vorher definierte Gruppe in die Zwischenablage kopieren
    DELETE Objekt löschen
    DESCRIPTION Beschreibung eines Objektes ändern
    GROUP Gruppe für spätere Operation definieren
    HOLE Nichtleitende Bohrung definieren
    LAUNCH Startet den Package-Generator und die webbasierte Package-Suche
    LAYER Layer definieren/wechseln
    LINE Linie oder geroutete Verbindung zeichnen
    MIRROR Objekt spiegeln
    MITER Linien-Verbindungsstellen abschrägen
    MODULE Modul und Modul-Instanz erzeugen
    MOVE Objekt bewegen oder rotieren
    NAME Objekt mit Namen versehen
    PASTE Inhalt der Zwischenablage in die Zeichnung einfügen
    PORT Port zu einem Modul hinzufügen
    POLYGON Polygon zeichnen
    RECT Rechteck zeichnen
    ROTATE Objekt rotieren
    SLICE Linien auftrennen
    REPOSITION NAME/VALUE-Texte zum Verschieben vorbereiten
    SPLIT Linien knicken
    TEXT Text zu einer Zeichnung hinzufügen
    VALUE Wert für Element definieren/ändern

    Spezielle Befehle für Platinen

    DRC Design Rule Check durchführen
    ERRORS DRC-Fehler anzeigen
    FANOUT Erzeugt Fanouts für Bauteile und Signale
    LOCK Bauteilposition verriegeln
    MANUFACTURING Manufacturing-Flyout ein- und ausblenden
    RATSNEST Kürzeste Luftlinien anzeigen
    REPLACE Bauteil ersetzen
    RIPUP Signal auflösen
    ROUTE Signal routen
    SIGNAL Signal (Luftlinie) definieren
    SPLINE Spline zeichnen
    VIA Durchkontaktierung (Via) plazieren

    Spezielle Befehle für Schaltpläne

    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

    Spezielle Befehle für Bibliotheken

    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

    Befehle für Bildschirmdarstellung und Benutzer-Interface

    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

    Weitere Befehle

    AUTO Autorouter starten
    HELP Hilfe-Seite anzeigen
    INFO Information über Objekt zeigen
    MARK Messmarke setzen/entfernen
    OPTIMIZE Linien-Segmente zusammenfassen
    PAINTROLLER Überträgt ausgewählte Eigenschaften eines gewählten Objekts zu anderen Objekten desselben Typs.
    PRINT 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
    FUSIONSYNC Board und Fusion PCB synchronisieren
    FUSIONTEAM Board- und Schaltplandatei und/oder Fertigungsdaten in Fusion Team publizieren.

    Befehlseingabe

    EAGLE-Befehle können auf vier verschiedene Arten eingegeben werden:
    Diese Eingabearten können auch gemischt verwendet werden.

    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;

    Verkürzte Eingabe

    Befehle und andere Schlüsselwörter können beliebig abgekürzt werden, solange sie nicht mit anderen Schlüsselwörtern verwechselt werden können.

    Alternative Parameter

    Das Zeichen | bedeutet, dass Parameter alternativ angegeben werden können. Beispiel:

    Syntax: SET BEEP OFF | ON;
    Input: SET BEEP OFF;
    oder
    SET BEEP ON;

    Wiederholungspunkte

    Die Zeichen .. bedeuten, dass die Funktion mehrfach ausgeführt werden kann bzw. dass mehrere Parameter vom gleichen Typ erlaubt sind. Beispiel:

    Syntax: DISPLAY option layer_name..
    Input: DISPLAY TOP PINS VIAS

    Koordinatenangaben

    Das Zeichen • bedeutet normalerweise, dass an dieser Stelle im Befehl mit der linken Maustaste ein Objekt anzuklicken ist. Beispiel:

    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.
    Soll eine andere als die im GRID-Befehl gewählte Einheit verwendet werden, so kann diese an die angegebenen Koordinaten angefügt werden, wie in
    (100mil 200mil)
    
    Erlaubte Einheiten sind mm, mic, mil und in. Es können auch unterschiedliche Einheiten für x und y verwendet werden.
    Die spezielle Koordinate
    (@)
    
    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
    Die Eingabe

    (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;
    LINE 0 (0 0) (160 0) (160 100) (0 100) (0 0);
    GRID LAST;
    

    Dezimalzahlen

    Bei der Eingabe von Dezimalzahlen in der Kommandozeile des Editor-Fensters oder in Dialog-Eingabefeldern können Sie das Komma als Dezimal-Trennzeichen verwenden (also zum Beispiel 12,34), falls Ihre landesspezifischen Einstellungen dies zulassen. Allerdings sollten Sie beim Schreiben eines Scripts oder eines ULPs, welches EAGLE-Befehle über die exit()-Funktion zurückgibt, immer den Punkt als Dezimal-Trennzeichen verwenden (also 12.34). Ansonsten kann es sein, dass Ihr Script bzw. ULP nicht auf anderen Systemen lauffähig ist. Generell ist es empfehlenswert, immer den Punkt als Dezimal-Trennzeichen zu verwenden.

    Strichpunkt

    Der Strichpunkt (';') schließt einen Befehl ab. Ein Befehl muss dann mit einem Strichpunkt abgeschlossen werden, wenn er weniger als die maximal mögliche Zahl von Parametern enthält. Der Befehl
    WINDOW;
    
    frischt beispielsweise das Zeichenfenster auf, während
    WINDOW FIT
    
    das 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.

    ADD

    Funktion
    Elemente in eine Zeichnung einfügen.
    Symbole in ein Device einfügen.
    Syntax
    ADD package_name[@library_name] [name] [orientation] •..
    ADD device_name[@library_name] [P3D=3d_package] [name [gate]] [orientation] •..
    ADD symbol_name [name] [options] •..
    Maustasten
    Mittlere spiegelt das Bauteil.
    Rechte dreht das Bauteil.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Siehe auch
    UPDATE, USE, INVOKE

    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!

    Package oder Symbol in Zeichnung holen

    Platzhalter

    Der ADD-Befehl kann mit Platzhaltern ('*' oder '?') arbeiten, um ein bestimmtes Element zu finden. Der ADD-Dialog zeigt alle gefundenen Elemente in einer Baumansicht und dazu auch eine Voransicht des Devices und der Package-Variante.

    Um ein Element direkt zu plazieren, verwenden Sie die Syntax:

    ADD devicename@libraryname
    
    devicename darf Platzhalter enthalten und libraryname darf entweder direkt der Bibliotheksname (wie "ttl" oder "ttl.lbr"), der volle Name mit Pfadangabe (wie "/home/mydir/myproject/ttl.lbr" oder "../lbr/ttl"), oder die URN einer heruntergeladenen Verwaltete Bibliothek (zum Beispiel "urn:adsk.eagle:library:462") sein. Im Falle von Leerzeichen im Pfad ist der Gesamtausdruck von Hochkommas einzuschließen (z.B. ADD 'DEV1A@/home/my dir/ttl.lbr').

    3D-Packages

    Wenn man ein Device in eine Zeichnug holt, kann man das 3D-Package des Devices mit folgender Syntax angeben:
    ADD devicename[@libraryname] P3D=3d_package
    
    wobei 3d_package der Name oder der URN des 3D-Packages sein kann. Dabei wird die Liste der passenden Devices devicename (und libraryname, wenn angegeben, die das entsprechende 3D-Package verwenden, ausgefiltert. Wird kein 3D-Package spezifiziert, werden alle mit dem angegebenen Device verwendeten 3D-Packages im ADD-Dialog gezeigt. Gibt es nur ein einziges passendes Device, dem kein oder nur ein einziges 3D-Package zugeordnet ist, wird das Device – und das 3D-Package, wenn vorhanden – direkt gewählt ohne dass der ADD-Dialog gezeit wird. Bei der 3d_package-Angabe spielt Groß-/Kleinschreibung keine Rolle; es werden keine Platzhalter unterstützt. Beispiel:
    ADD PINHD-1x4 P3D=PINHD-1x4-5.84MM
    
    fügt das Device PINHD-1x4 in Schaltplan (und Board) ein und ordnet das 3D-Package PINHD-1x4-5.84MM zu.

    Namen

    Der Parameter package_name, device_name bzw. symbol_name ist der Name, unter dem das Package/Device/Symbol in der Bibliothek abgelegt ist. Er wird üblicherweise aus einem Menü selektiert. Der Parameter name ist der Name, den das Element in der Zeichnung erhalten soll. Falls der Name als eine Orientierung oder Option interpretiert werden könnte, muss er in Hochkommas eingeschlossen werden. Wird er nicht explizit angegeben, erhält das Element einen generierten Namen.

    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 •
    

    Bestimmte Gatter

    Um ein bestimmtes Gatter eines neu hinzugefügten Bausteins zu holen kann nach dem Bauteilnamen der Name des Gatters angegeben werden:

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

    Orientation

    Dieser Parameter gibt die Ausrichtung des Objektes in der Zeichnung an. Normalerweise rotiert man Objekte mit der rechten Maustaste. In Script-Dateien verwendet man die textuellen Angaben für diesen Parameter:

    [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
    Rnnnsetzt 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.3um 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).

    Fehlermeldungen

    Soll ein Gate aus einem unvollständig definierten Device geholt werden, erscheint eine Fehlermeldung (siehe BOARD-Befehl). Dies lässt sich mit dem Befehl "SET CHECK_CONNECTS OFF;" verhindern. Vorsicht: Der BOARD-Befehl führt diese Prüfung auf alle Fälle durch. Sie abzuschalten ist also nur sinnvoll, wenn man keine Platine erzeugen will.

    Symbol in Device holen

    Bei der Device-Definition holt der ADD-Befehl ein vorher definiertes Symbol in das Device. Als Optionen sind zwei Parameter (Swaplevel und Addlevel) möglich, die in beliebiger Reihenfolge eingegeben werden können. Beide lassen sich mit dem CHANGE-Befehl voreinstellen und ändern. Auch der im ADD-Befehl angegebene Wert bleibt als Voreinstellung erhalten.

    Swaplevel

    Der Swaplevel ist eine ganze Zahl, wobei gilt:

    0: Das Symbol (Gate) kann im Schaltplan nicht mit einem anderen vertauscht werden.
    >0 Das Symbol (Gate) kann im Schaltplan mit jedem anderen Symbol dieses Typs vertauscht werden, das denselben Swaplevel hat (auch zwischen verschiedenen Devices).

    Default: 0

    Addlevel

    Für diesen Parameter gibt es folgende Möglichkeiten:
    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.
    RequestDiese 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.

    ADDMODEL

    Funktion
    Konvertiert ein einzelnes Part oder einen ganzen Schaltplan in einen Spice-kompatiblen Schaltplan.
    Syntax
    ADDMODEL name ..
    See also
    SIM

    Dieser Befehl konvertiert ein einzelnes Bauteil oder einen vollständigen Schaltplan (wenn vorher alles selektiert wurde) in einen spice-simulationsfähigen Schaltplan indem die Bauteile so modifiziert werden, dass sie die notwendigen Attribute und Zuordnungen enthalten. Wenn möglich, werden Annahmen getroffen welches Mapping für den Device-Typ getroffen werden kann. Dazu wird angenommen, dass der erste Buchstabe des Prefix gleich dem des Spice-Modells ist. Beispielsweise nimmt man für einen Wiederstand R, einen Kondensator C, eine induktivität L und einen Schaltkreis X an. Der Anwender kann die richtige Zuordnung des Device-Typs im angezeigten Dialog wählen. In der Hilfe zum SIM-Befehl finden Sie weitere Informationen über Simulation, und eine detailierte Liste über Spice-Devices und deren Syntax auf der Berkeley-Spice-Webseite hier Das ist die Liste der gültigen Spice-Präfixe.

    R L C K X S W V I G E F H B T O U D Q J M Z

    ALIGN

    Funktion
    Ordnet ausgewählte Objekte im Layout-Editor an.
    Syntax
    ALIGN • ..

    Zur Zeit unterstützt der ALIGN-Befehl keine Kommandozeilen-Parameter.

    Anwendung

    Der ALIGN-Befehl wird verwendet um ausgewählte Objekte zueinander auszurichten oder deren Ursprungspunkt auf den nächstgelegenen Rasterpunkt zu legen. Der Befehl kann über das Befehlsmenü, die Kommandozeile oder das Bearbeiten-Menü gestartet werden. Folgende Betriebsarten werden unterstützt:
    • Align Edges Top | Bottom | Left | Right (Ausrichtung an oberer | unterer | linker | rechter Kante)
    • Align Centers Vertical | Horizontal (Ausrichtung vertikal | horizontal zentriert)
    • Distribute Vertically | Horizontally (Verteilung vertikal | horizontal)
    • Align Origin to Grid (Auf das Raster ausrichten)

    Der ALIGN-Befehl nutzt an den Achsen ausgerichtete Boundingboxen der Objekte in allen Betriebsarten mit Ausnahme von "Align Origin to Grid" (wie der Name sagt wird der Aufhängepunkt des Objekts dazu verwendet).

    Für den Modus Distribute Vertically | Horizontally werden mindestens drei Objekte benötigt - in dieser Betriebsart werden die gewählten Objekte mit gleichem Abstand verteilt.

    Verwendungsmöglichkeit

    Der ALIGN-Befehl kann auf folgende Objekttypen angewendet werden:
    • Element
    • Text
    • Pad
    • Via
    • Hole

    Der ALIGN-Befehl ignoriert alle anderen Objekttypen, auch wenn sie vor dem Start des Befehls ausgewählt wurden. Der ALIGN-Befehl ist nicht anwendbar, wenn sich keine geeigneten Objekte im Editor befinden.

    ARC

    Funktion
    Zeichnen von Kreisbögen.
    Syntax
    ARC ['signal_name'] [CW | CCW] [ROUND | FLAT] [width] • • •
    Maustasten
    Mittlere wählt den Layer.
    Rechte ändert den Drehsinn.
    Siehe auch
    CHANGE, LINE, CIRCLE

    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.

    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, wird der Kreisbogen 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 Kreisbogen so plaziert wird, dass er unterschiedliche Signale verbindet. Bitte führen Sie deshalb einen Design Rule Check durch, nachdem Sie den ARC-Befehl mit dem Parameter signal_name benutzt haben!

    Strichstärke

    Der Parameter width gibt die Strichstärke an, er lässt sich mit dem Befehl
    CHANGE WIDTH width;
    
    voreinstellen oder verändern und ist identisch mit der aktuellen Strichstärke für Linien.

    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.

    ASSIGN

    Funktion
    Tastenbelegung zuweisen.
    Syntax
    ASSIGN
    ASSIGN function_key befehl..;
    ASSIGN function_key;

    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)

    Siehe auch
    SCRIPT, Tastatur und Maus

    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 (wie z.B. Shift+F10 auf Windows).
    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.

    Beispiele

    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.

    Befehlsmenü einstellen

    Will man mit ASSIGN eine Taste so belegen, dass sie ein neues Menü einstellt, dann muss das im MENU-Befehl enthaltene Trennzeichen (Strichpunkt) von jeweils drei Hochkommas eingeschlossen sein, wie im dritten Beispiel zu sehen.

    Voreinstellung der Tastenbelegung

    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

    Ausserdem sind viele nützliche Tastenbelegungen im Initialisierungsskript default-assign.scr enthalten und können Ihren individuellen Vorstellungen angepaßt werden.

    ATTRIBUTE

    Funktion
    Definition von Attributen für Bauteile.
    Syntax
    ATTRIBUTE name [ 'value' ] [ options ]
    ATTRIBUTE part_name attribute_name
    ATTRIBUTE part_name attribute_name 'attribute_value' [ [ orientation ] • ]
    ATTRIBUTE part_name attribute_name DELETE
    ATTRIBUTE element_name attribute_name
    ATTRIBUTE element_name attribute_name 'attribute_value' [ [ orientation ] • ]
    ATTRIBUTE element_name attribute_name DELETE
    ATTRIBUTE * [ name [ 'value' ] ]
    ATTRIBUTE * name DELETE
    ATTRIBUTE •..
    Siehe auch
    TECHNOLOGY, NAME, VALUE, REPOSITION, TEXT

    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 in der Bibliothek

    In einer Bibliothek kann der ATTRIBUTE-Befehl dazu verwendet werden, die Attribute einer bestimmten Technology-Variante zu definieren. Die Syntax hierfür lautet
    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).
    variableDas Attribut wird als variabel markiert, so dass es im Schaltplan überschrieben werden kann (dies ist die Standardeinstellung).
    constantAttribute, die als konstant markiert sind, können nicht im Schaltplan überschrieben werden (es sei denn, der Anwender besteht darauf).
    Optionen können abgekürzt werden und Groß-/Kleinschreibung spielt keine Rolle.

    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')
    Wird der Wert eines Attributes verändert, so bleibt seine konstant/variabel-Einstellung unverändert (es sei denn, sie wird explizit angegeben). Bei einem Bibliotheks-UPDATE wird der Wert eines konstanten Attributs wieder aus der Bibliothek übernommen.

    Attribute im Schaltplan

    Im Schaltplan kann der ATTRIBUTE-Befehl dazu verwendet werden, einem Bauteil Attribute zuzuweisen. Der Wert eines solchen Attributs überschreibt dann den des gleichnamigen Attributs aus der Bibliothek (falls das Device ein solches Attribut hat und das Überschreiben zulässt). Einem Bauteil können auch Attribute zugewiesen werden, die nicht in der Bibliothek definiert wurden.

    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 •
    

    Bei bereits existierenden Attributen ist nur eine Änderung des Wertes möglich; hierzu kann folgende Syntax benutzt werden:

    ATTRIBUTE part_name attribute_name 'attribute_value';
    
    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 seiner Gatter 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 DELETE
    
    verwendet 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.

    Attribute im Board

    Im Board können den Bauteilen Attribute auf die gleiche Weise zugewiesen werden wie im Schaltplan. Standardmäßig haben die Bauteile im Board alle Attribute, die für das jeweils zugehörige Bauteil im Schaltplan (und dessen Device in der Bibliothek) definiert wurden. Gleichnamige Attribute eines zusammengehörenden Paares von Bauteilen im Schaltplan und im Board haben immer den selben Wert (über die Forward&Back-Annotation). Bauteile im Board können zusätzliche Attribute erhalten, die nicht im Schaltplan oder in der Bibliothek definiert wurden.

    Wird im Board für ein Element die graphische Darstellung eines Attributes gelöscht und ist dieses Attribut lediglich im Board definiert, wird das Attribut selbst auch gelöscht. In allen anderen Fällen wird das Attribut nicht gelöscht, sondern nur der Anzeige-Modus auf OFF (unsichtbar) geändert.

    Globale Attribute

    Globale Attribute können in Boards und Schaltplänen definiert werden indem als Bauteilname ein '*' eingegeben wird (was gleichbedeutend ist damit, dass das Attribut für alle Bauteile gilt). Alternativ können die globalen Attribute auch über die Menü-Option "Bearbeiten/Globale Attribute..." definiert werden. Die globalen Attribute von Board und Schaltplan werden getrennt voneinander behandelt und sind nicht über Forward&Back-Annotation verbunden.

    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.

    Das Attribut VALUE und andere spezielle Attribute

    Namen von Text-Platzhaltern wie NAME oder GATE dürfen nicht als Attributnamen verwendet werden. Eine Ausnahme bildet das Attribut VALUE, mit dem in der Bibliothek jedem Device ein Wert zugeordnet werden kann. Dieser Wert wird beim Einsetzen in den Schaltplan als Bauteilwert verwendet, unabhängig davon, ob Value Off oder On für das Device-Set gesetzt ist. Das Attribut VALUE tritt dann im Schaltplan oder Board nicht mehr in Erscheinung und kann dort auch nicht mehr angelegt werden, um Mißverständnisse zu vermeiden. Änderungen des Bauteilwerts können in der üblichen Weise mit dem VALUE-Befehl gemacht werden. Das Attribut VALUE wird auch beim Bibliotheks-Update, bei CHANGE PACKAGE/TECHNOLOGY und REPLACE berücksichtigt, der Bauteilwert also ggf. durch den neueren oder anderen Wert von VALUE ersetzt.

    Der Attributname _EXTERNAL_ ist zur Kennzeichnung externer Devices reserviert (siehe PACKAGE).

    Layer auswählen

    Im Gegensatz zu anderen Befehlen (wie etwa LINE) merkt sich der ATTRIBUTE-Befehl den zuletzt verwendeten Layer selbst. Das hat den Vorteil, dass Attribute immer im richtigen Layer landen, egal welche Layer andere Befehle verwenden. Der Nachteil ist, dass die übliche Vorgehensweise, den Layer in einem Script auszuwählen, wie etwa
    LAYER Layer;
    LINE (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.
    Die Befehle
    ATTRIBUTE
    LAYER Layer;
    
    setzen den Layer für nachfolgende ATTRIBUTE-Befehle.

    Beispiele

    Zuerst müssen das Package und die Technology (falls es mehr als eine gibt) gewählt werden, dann können die Attribute für diese Technology definiert werden:
    PACKAGE N;
    TECHNOLOGY LS;
    ATTRIBUTE PartNo '12345-ABC';
    ATTRIBUTE Temp '100K' constant;
    ATTRIBUTE Remark 'mount manually';
    

    AUTO

    Funktion
    Autorouter aktivieren.
    Syntax
    AUTO;
    AUTO signal_name..;
    AUTO ! signal_name..;
    AUTO •..;
    AUTO FOLLOWME
    AUTO BGA
    AUTO LOAD|SAVE filename;
    Siehe auch SIGNAL, ROUTE, FANOUT, LINE, RATSNEST, SET

    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.

    Beispiel

    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.

    Platzhalter

    Falls der signal_name-Parameter angegeben wurde, so sind die Zeichen '*', '?' und '[]' Platzhalter und haben folgende Bedeutung:

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

    Polygone

    Beim Starten des Autorouters werden alle Polygone neu freigerechnet.

    Protokolldatei

    Informationen zum Routing-Vorgang enthält die Datei name.pro, die ebenfalls automatisch angelegt wird.

    Routing-Fläche

    Der Autorouter legt ein umschließendes Rechteck um alle Objekte des Boards und nimmt die Größe dieses Rechtecks als maximale Route-Fläche. Linien im Dimension-Layer stellen für den Autorouter Sperrlinien dar. Das heisst, mit geschlossenen Linienzügen in diesem Layer kann man den Route-Bereich begrenzen.

    Signale

    Als Signale erkennt der Autorouter Linien und Polygone in den Layern Top, Bottom und Route2...15, sowie die mit SIGNAL definierten Luftlinien.

    Sperrflächen

    Objekte in den Layern bRestrict, tRestrict und vRestrict werden als Sperrflächen für Löt- und Bestückungsseite sowie für Durchkontaktierungen (Vias) behandelt.

    Falls der Autorouter keine Signale in einem Layer verlegen soll, ist in das Feld für die Vorzugsrichtung "N/A" einzutragen.

    Wahl des Rasters

    Bei der Wahl des Rasters ist zu beachten, dass möglichst keine Pads für den Router "unsichtbar" werden. Das heisst, jedes Pad soll mindestens einen Routing-Rasterpunkt belegen, sonst kann es passieren, dass der Autorouter eine Verbindung nicht legen kann, die ansonsten ohne Probleme zu verlegen wäre - einfach weil er das entsprechende Pad nicht auf seinem Raster darstellen kann.

    Abbruch

    Wird der Autorouter durch einen Klick auf den STOP-Button abgebrochen, so werden die bis dahin noch nicht verlegten Luftlinien nicht automatisch neu berechnet. Benutzen hierzu Sie den RATSNEST-Befehl.

    BGA

    Der BGA-Autorouter ist eine besondere Art von Autorouter, der dafür entwickelt wurde die Verbindungen eines BGAs (Ball Grid Arrays) in minimaler Anzahl von Layern zu verlegen und dessen spezielle Anforderungen zu erfüllen. Der Einsatz des BGA-Routers ist sinnvoll, wenn man wenige Signallagen zur Verfügung hat bzw. die Anzahl der Signallagen möglichst gering halten muss. Das BGA-Routing kann abhängig von der Art des BGAs sehr zeit- und speicherintensiv sein.

    Parameter

    Der BGA-Router hat verschiedene Eingabe-Parameter. Diese Parameter sollten jedem BGA als Wert des Attributs mit dem Namen "BGA" zugeordnet werden. Bitte ordnen Sie das Attribut "BGA" nur BGA-Bauteilen zu, da das Verhalten des BGA-Routers für Nicht-BGA-Bauteile nicht definiert ist. Ordnet man einem BGA ein Attribut mit dem Namen "BGA" ohne Attribut-Wert zu, versucht der BGA-Router alle an SMDs angeschlossenen Signale in allen im Layer-Setup definierten Signallagen und mit Micro-Vias, falls diese Technologie in diesem Board unterstützt ist, zu verlegen. Wenn nur ein Teil der Signale, die mit dem BGA-Bauteil verbunden sind, geroutet werden sollen, muss dem "BGA"-Attribut folgender Wert zugewiesen werden:
    (NETS "Liste der Signalnamen")
    Beispiel:
    (NETS LPC_A1 PWR D0)
    
    Man kann auch Signale des BGAs vom Routen ausnehmen. In diesem Fall muss man dem Schlüsselwort NETS ein - Minuszeichen voranstellen:
    Beispiel:
    (-NETS LPC_A1 PWR D0)
    
    In diesem Fall werden alle Signale außer LPC_A1, PWR und D0 verlegt.
    Es ist auch möglich den Signalen Layer zuzuordnen. Zu diesem Zweck muss man dem Attribute-Wert noch weitere Informationen hinzufügen:
    (LAYERS (LAYER_NUMBER1 "list1 of signal names") (LAYER_NUMBER2 "list2 of signal names") ...)
    
    In diesem Fall dürfen nur die Signale von list1 den Layer mit der Nummer LAYER_NUMBER1 verwenden.
    Beispiel:
    (LAYERS (2 GND) (3 3V3 2V5 1V2))
    
    Hier darf nur GND in Layer 2 und nur die Signale 3V3, 2V5 und 1V2 in Layer 3 verlegt werden. Mit einer leeren Liste, zum Beispiel (2), wird der Layer 2 für das BGA-Routing gesperrt. Definiert man leere Listen für verschiedene Layer, sind all diese Layer vom Routing ausgenommen.
    Man kann auch Signale vom Routing ausschließen:
    Dies erreicht man indem man der Layer-Nummer in Minus-Zeichen voranstellt:
    (LAYERS (2 GND) (-3 3V3 2V5 1V2))
    
    Hier wird Layer 2 nur für GND verwendet, in Layer 3 dürfen alle Signale mit Ausnahme von 3V3, 2V5 und 1V2 verlegt werden.
    Der BGA-Router kann auch Micro-Vias setzen, wenn diese im Layer-Setup des Boards definiert sind. Das Micro-Via wird im SMD-Pad gesetzt. Das Setzen der Micro-Vias verhindert man mit dem Parameter:
    (MICROVIAS OFF)
    

    GUI

    Man kann alle Parameter wie oben beschrieben durch die Konfiguration des Attribute-Werts des "BGA"-Attributs definieren. Wesentlich einfacher geht das mit dem grafischen Dialog des BGA-Routers. Durch die Eingabe von 'AUTO BGA' erscheint ein Dialog mit zwei Listen. Mit dem 'AUTO BGA'-Befehl ersceint ein Dialog, der zwei Listen enthält. Die Liste links zeigt Bauteile, die möglicherweise ein BGA sein könnten. Die rechte Liste enthält BGAs für die man Einstellungen treffen und speichern möchte und die dann geroutet werden sollen. Man kann die Einträge von einer Liste in die andere verschieben. Die Objekte in der rechten Liste (die ausgewählten BGAs) können mit einem orangen oder grünen Punkt markiert sein. Grün bedeutet, dass die Einstellungen gespeichert werden und das Bauteil anschließend geroutet wird. Bei oranger Markierung wird nur die Konfiguration gespeichert. Mit Doppelklick auf das Element wechselt man diese Einstellung. Über die Schaltfläche "Edit" kann man die Einstellungen für das selektierte Bauteil in einem weitern Dialog erreichen. Der neue Dialog zeigt eine Liste der Signale des BGAs mit einer entsprechenden Layerzuordnung. Für jedes Signal kann man eine eigene Layerzuordnung treffen. Über "Edit" kann man für vorher gewählte Signale eine spezielle Layerauswahl treffen.
    Im Signal-Dialog kann man die Verwendung von Micro-Vias festlegen.

    BOARD

    Funktion
    Erzeugt eine Board-Datei aus einem Schaltplan.
    Syntax
    BOARD [ grid ]
    Siehe auch
    EDIT

    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 5mm
    
    womit 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.

    Platine aus Schaltplan erzeugen

    Wird eine Platine zum erstenmal geladen, prüft das Programm, ob im selben Verzeichnis ein Schaltplan mit demselben Namen existiert. Wenn ja, fragt das Programm, ob aus dem Schaltplan die Platine erstellt werden soll.
    Wenn ein Schaltplan geladen ist, können Sie die zugehörige Platine erzeugen, indem Sie
    edit .brd
    
    in 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 LINE-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:

    BUS

    Funktion
    Zeichnen von Bussen im Schaltplan.
    Syntax
    BUS [? | {PREDEFINED_BUS_NAME} | bus_spec] • [curve | @radius] •..
    BUS {PREDEFINED_BUS_NAME=bus_spec}
    Maustasten
    Rechte ändert den Knickwinkel (siehe SET Wire_Bend).
    Shift+Rechte kehrt die Richtung des Weiterschaltens des Knickwinkels um.
    Ctrl+Rechte schaltet zwischen zwei korrespondierenden Knickwinkeln um.
    Siehe auch INFO, BREAKOUTBUS, NET, NAME, SET

    Ein BUS repräsentiert eine Sammlung von Netzen. Ein BUS hat eine Spezifikation und besteht aus einem oder mehreren Liniensegmenten. Die Bus-Spezifikation kann einen (eindeutigen) Alias, eine Kurzbezeichnung, enthalten um den Bus identifizieren zu können. Mit dem Befehl BUS zeichnet man Busse in den Bus-Layer eines Schaltplans.

    EAGLE kann eine wiederverwendbare Bus-Spezifikation als "Predefined Bus" (PDB) abspeichern. Diese PDBs werden in der Datei eaglerc abgespeichert und stehen projektübergreifend zur Verfügung. Sie können so auch mit anderen geteilt werden (Beispiel: SPI:MISO,MOSI,CLK,CS). Gibt man den PDB in geschweiften Klammern nach dem BUS-Befehl an, wird der Bus beim Zeichnen diese Eigenschaften übernehmen. Der "Predefined Bus Name" muss gültig und in der Datei eaglerc gespeichert sein.

    BUS {PREDEFINED_BUS_NAME}
    

    Das BUS-Icon im Befehlsmenü unterstützt ein Rechtsklick-Menü, das einen schnellen Zugriff auf die PDBs erlaubt. Alternativ kann man den Befehl mit obiger Syntax in der Kommandozeile verwenden.

    Neue PDBs können mit der folgenden Syntax auch über die Kommandozeile angelegt werden. Bitte beachten Sie, dass der PDB eindeutig und bus_spec eine gültige Bus-Spezifikation, wie in diesem Abschnitt beschrieben, sein müssen. PDBs werden in der eaglerc gespeichert und können sofort verwendet werden.

    BUS {PREDEFINED_BUS_NAME=bus_spec}
    

    Tippt man BUS ? in der Kommandozeile oder wählt man "Neu" aus dem Rechtsklick-Menü des Befehls-Icons, öffnet sich der "Predefined Bus"-Dialog in dem man PDBs verwalten und neu anlegen kann.

    BUS ?
    

    Bus_spec hat die folgende Form:

    ALIAS:partbus,partbus,..
    
    wobei ALIAS ein beliebiger Name sein darf. partbus ist entweder ein Netzname oder ein Busname mit Index in der Form:
    NetName[NiedrigsterIndex..HöchsterIndex]
    
    wobei folgende Bedingungen erfüllt sein müssen:

    0 <= NiedrigsterIndex <= HöchsterIndex <= 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ört.

    Wenn der Bus auf einen 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 Parameter curve oder @radius angegeben, kann ein Kreisbogen als Teil des Busses gezeichnet werden (siehe die ausführliche Beschreibung beim LINE-Befehl).

    Beispiele für Bus-Spezifikationen

    A[0..15]
    RESET
    DB[0..7],A[3..4]
    ATBUS:A[0..31],B[0..31],RESET,CLOCK,IOSEL[0..1]
    
    Gibt man keine Bus-Spezifikation an, wird eine Spezifikation der Form B$1 automatisch vergeben. Diese lässt sich zu jeder Zeit mit dem NAME- oder INFO-Befehl verändern.

    Die Linienbreite des Busses kann zum Beispiel mit

    SET Bus_Wire_Width 40;
    
    auf 40 mil geändert werden. (Default: 30 mil).

    Negierte Signale

    Der Name eines negierten Signals ("active low") kann überstrichen dargestellt werden, wenn ihm ein Ausrufezeichen ('!') vorangestellt wird, wie in
      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-Befehles.

    Bus Breakouts

    Mit dem BREAKOUTBUS-Befehl kann man neue mit Labeln versehene Netze automatisch aus Bussen herausführen. Den Befehl startet man im Rechtsklick-Menü des Bus-Objekts oder über die Kommandozeile.

    BREAKOUTBUS

    Function
    Herausführen von Bus-Signalen als Netzlinie mit Label.
    Syntax
    BREAKOUTBUS • •..

    Den BREAKOUTBUS-Befehl erreicht man nach einem Rechtsklick auf einen Bus über das Kontextmenü. The Breakout-Arten werden im Menü zur Auswahl angeboten: "Alle Netze", "Selektierte Netze" und "Einzelnes Netz". Die "Selektierte Netze"-Option öffnet einen Dialog in dem der Anwender die herauszuführenden Netze wählt. "Einzelnes Netz" ist ein Menüpunkt bei dem alle Netze des Busses gezeigt werden und eines davon gewählt werden kann. "Alle Netze" führt alle Netze des Busses heraus.

    Sobald die Art des Breakouts gewählt ist, werden die Netze mit Labels versehen, im Abstand von einer Rastereinheit entlang des Busses erzeugt und vom Anwender die Platzierung mit einem Mausklick fixiert.

    Hält man die SHIFT-Taste beim Platzieren der Netze gedrückt, wird die Anordnung der neuen Netze eingefroren und man kann diese nur noch entlang des Busses bewegen.

    CHANGE

    Funktion
    Ändern von Parametern.
    Syntax
    CHANGE option • •..
    Maustasten
    Ctrl+Rechte ändert Parameter der Gruppe.
    Der CHANGE-Befehl dient generell dazu, Eigenschaften von Objekten zu ändern oder voreinzustellen. Objekte, die schon in der Zeichnung vorhanden sind, werden einfach der Reihe nach mit der Maus selektiert, nachdem der Befehl und der entsprechende Parameter vorher eingegeben (bzw. aus einem Menü mit der Maus ausgewählt) wurden.

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

    Gruppe ändern

    Will man den CHANGE-Befehl auf eine Gruppe ausführen, definiert man zuerst die Gruppe mit dem
    GROUP-Befehl, dann gibt man den CHANGE-Befehl mit den entsprechenden Parametern ein und klickt die Gruppe anschließend mit der rechten Maustaste an.

    Möglichkeiten des CHANGE-Befehls

    Layer wechseln CHANGE LAYER name | number
    Text ändern CHANGE TEXT [ text ]
    Texthöhe CHANGE SIZE value
    Textstärke CHANGE RATIO ratio
    Text Zeilenabstand CHANGE LINEDISTANCE value
    Text Font CHANGE FONT VECTOR | PROPORTIONAL | FIXED
    Text Ausrichtung CHANGE ALIGN BOTTOM | LEFT | CENTER | TOP | RIGHT
    Linienbreite CHANGE WIDTH value
    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
    Smd-Abrundung CHANGE ROUNDNESS value
    Pin-Parameter CHANGE DIRECTION NC | IN | OUT | IO | OC | HIZ | SUP | PAS | PWR
    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 | CUTOUT
    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]
    3D Package CHANGE PACKAGE3D part_name [3d_package] | '3d_package' [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
    Bemaßungs-Typ CHANGE DTYPE PARALLEL | HORIZONTAL | VERTICAL | RADIUS | DIAMETER | ANGLE | LEADER
    Bemaßungs-Einheit CHANGE DUNIT [MIC | MM | MIL | INCH] [OFF | ON] [precision]
    Bemaßungs-Linien CHANGE DLINE width [ extension_width [ extension_length [ extension_offset ]]] (Hilfslinienwerte können auf AUTO gesetzt werden. Nicht zu verändernde Werte können mit '-' angegeben werden, siehe Beispiele)
    Populate CHANGE POPULATE OFF | ON (ist nur im Board ohne aktiver F/B-Annotation verfügbar)

    Beispiele

    CHANGE DLINE 0.1mm;
    
    ändert die Bemaßungs-Linienstärke auf 0.1mm. Die Hilfslinien-Parameter bleiben unverändert.
    CHANGE DLINE 0.2mm - 0.5mm AUTO;
    
    ändert die Bemaßungs-Linienstärke auf 0.1mm, die Hilfslinien-Länge auf 0.5mm und den Hilfslinien-Offset auf AUTO. Die Hilfslinien-Stärke bleibt unverändert.

    CUSTOM3D

    Funktion
    Hinzufügen eines 3D-Modells zu einem Bauteil im Schaltplan- oder Layout-Editor.
    Syntax
    CUSTOM3D
    Maustasten
    Linke wählt das Bauteil auf das der Befehl angewendet werden soll.

    CIRCLE

    Funktion
    Kreis in eine Zeichnung einfügen.
    Syntax
    CIRCLE • •.. [Kreismitte, Radius]
    CIRCLE width • •..
    Maustasten
    Mittlere wählt den Layer.
    Siehe auch
    CHANGE, LINE

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

    Der Radius des Kreises ist auf 1000mm begrenzt.

    Beispiel für Parameterangabe in Textform

    GRID inch 1;
    CIRCLE (0 0) (1 0);
    
    erzeugt einen Kreis mit einem Radius von 1 Zoll um den Ursprung (0 0).

    CLASS

    Funktion
    Definieren und Wählen von Netzklassen.
    Syntax
    CLASS
    CLASS number|name
    CLASS number [ name [ width [ clearance [ drill ] ] ] ] [ number:clearance .. ]
    Siehe auch
    Design Rules, NET, SIGNAL, CHANGE

    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.

    Module verwenden dieselben Netzklassen wie der Schaltplan selbst.

    Wenn ein Netz eines MODULEs eine elektrische Verbindung über einen PORT besitzt, wird die Netzklasse diese Netzes durch die Netzklasse des am Port angschlossenen Netzes überschrieben.

    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.

    Width

    Der width-Parameter bestimmt die Mindestbreite, die alle Objekte in dieser Netzklasse haben müssen.

    Clearance

    Der clearance-Parameter bestimmt den Mindestabstand zwischen Objekten verschiedener Signale in dieser Netzklasse zu Objekten in anderen Netzklassen.

    Drill

    Der drill-Parameter bestimmt den Mindest-Bohrdurchmesser, den alle Objekte in dieser Netzklasse haben müssen (bezieht sich nur auf Objekte, die auch tatsächlich einen drill-Parameter haben, wie etwa Pads und Vias).

    Clearance zwischen Netzklassen

    Wird eine Clearance in der Form number:clearance angegeben, so definiert sie den Mindestabstand zwischen Signalen in dieser Netzklasse und solchen in der Netzklasse mit der angegebenen number. Der Befehl
    CLASS 3 1:0.6mm 2:0.8mm
    
    definiert 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.2mm
    
    ebenfalls gültig, während
    CLASS 3 1:0.6mm 2:0.8mm 3:0.2mm 4:0.5mm
    
    nicht erlaubt ist.

    Ein Wert von '0' als Mindestabstand zwischen zwei verschiedenen Netzklassen bedeutet, dass hier kein spezieller Wert gilt, sondern wieder der größere Wert der beiden beteiligten Netzklassen.

    CLOSE

    Funktion
    Schließt ein Editor-Fenster.
    Syntax
    CLOSE
    Siehe auch
    OPEN, EDIT, WRITE, SCRIPT

    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

    Funktion
    Zuordnung von Pins und Pads.
    Syntax
    CONNECT
    CONNECT [ ALL | ANY ] gate_name.pin_name pad_name..
    CONNECT [ ALL | ANY ] pin_name pad_name..
    Siehe auch
    PREFIX, OPEN, CLOSE, SCRIPT

    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.

    Device hat ein Gatter

    Ist im Device nur ein Gatter vorhanden, kann der Parameter gate_name entfallen, z.B.
    CONNECT gnd 1 rdy 2 phi1 3 !irq 4 nc1 5 ...
    

    Device hat mehrere Gatter

    Sind im Device mehrere Gatter vorhanden, sind als Parameter gate_name und pin_name (mit Punkt als Trennzeichen) sowie pad_name anzugeben, z.B.:
    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 Gatter 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 für die angegebenen Pins.

    Beachten Sie bitte, dass bei einer großen Zahl von Verbindungen innerhalb eines Devices der CONNECT-Befehl wesentlich schneller arbeitet, wenn alle Verbindungen in einem einzigen Aufruf angegeben werden, so wie im Beispiel unten gezeigt.

    Mehrere Pads am gleichen Pin angeschlossen

    Manche Bauteile, wie etwa Leistungsverstärker oder BGA-Chips, können mehrere Pads haben die intern verbunden sind, zum Beispiel zur besseren Wärmeableitung oder um höhere Ströme zu ermöglichen. Der CONNECT-Befehl kann diese Fälle berücksichtigen, indem einfach alle betreffenden Pad-Namen, getrennt durch Leerzeichen (und daher in einfache Hochkommas eingeschlossen) angegeben werden:
    CONNECT ALL I1 '1 3 5';
    CONNECT ANY O1 '2 4 6';
    
    Im ersten Beispiel ist der Pin I1 mit den drei Pads 1, 3 und 5 verbunden. Wird der Pin I1 im Schaltplan mit einem Netz verbunden, so müssen all drei Pads im Board explizit mit dem entsprechenden Signal verbunden werden.
    Das Schlüsselwort ANY im zweiten Beispiel bedeutet, dass irgend eines (oder auch alle) der Pads 2, 4 oder 6 an das Signal angeschlossen werden können. Es ist sogar erlaubt, diese interne Verbindung als "Brücke" zu verwenden, indem ein Segment des Signals zum Beispiel an Pad 2 angeschlossen wird, während der Rest des Signals mit Pad 6 verbunden wird - ohne eine explizite externe Verbindung zwischen diesen beiden Pads. Natürlich sollten Sie sich bei der Verwendung von ANY im CONNECT-Befehl darüber im Klaren sein, ob das entsprechende Bauteil es verträgt, wenn Querströme durch seine Pads fließen. Im Zweifelsfall verwenden Sie lieber ALL (was auch der Standardwert ist und weggelassen werden kann.).

    Sollte ein Pin-Name mit einem der Schlüsselworte ALL oder ANY kollidieren, so muss der Pin-Name in einfache Hochkommas eingeschlossen werden. Sobald eines dieser Schlüsselworte in einem CONNECT-Befehl vorkommt, gilt es für alle nachfolgenden Pin/Pad-Verbindungen, bis ein anderes Schlüsselwort auftaucht:

    CONNECT 'A' '1' 'B' '2' ANY 'C' '3 4 5 6' 'D' '7 8' ALL 'E' '9 10 11';
    

    Der RATSNEST- und AUTO-Befehl berücksichtigt die ALL und ANY Fälle entsprechend.

    Im CONNECT-Dialog erzeugt der "Connect"-Button eine neue Verbindung zwischen dem selektierten Pin und den selektierten Pads. Es können mehrere Pads selektiert sein, die dann alle mit dem selektierten Pin verbunden werden. Benutzen sie die Ctrl- und Shift-Tasten in der üblichen Weise, um mehrere Pads zu selektieren.
    Der "Append"-Button fügt die selektierten Pads zu der aktuellen Verbindung hinzu.
    Der "Disconnect"-Button trennt die aktuelle Verbindung auf und verschiebt den Pin und die Pads zurück in ihre jeweiligen Listen. Sie bleiben dabei selektiert, um auf einfache Weise Änderungen vornehmen zu können. Ein Disconnect unmittelbar gefolgt von einem Connect führt zur gleichen Konfiguration wie vor dem Disconnect (und umgekehrt). Enthält eine Verbindung mehr als ein Pad, so zeigt ein Icon an ob irgend eines oder alle Pads extern an ein Signal angeschlossen werden müssen. Klicken Sie auf das Icon um den Modus umzuschalten. Wenn ein solcher Listeneintrag aufgeklappt ist, so werden alle Pads einzeln angezeigt und ein Klick auf Disconnect mit einem dieser Pads selektiert löst nur dieses eine Pad von der Verbindung.

    Gate- oder Pin-Namen mit Punkten

    Soll ein Gate- oder ein Pin-Name einen Punkt enthalten, kann dieser ohne weiteres verwendet werden. Es sind keine besonderen Zeichen (Esc-Character oder Anführungszeichen) nötig.

    Beispiel

    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

    Funktion
    Kopieren von Objekten.
    Syntax
    COPY • •..
    COPY deviceset@[library] [name]
    COPY package@[library] [name]
    COPY symbol@[library] [name]
    Maustasten
    Ctrl+C kopiert aktuell ausgewählte Objekte.
    Ctrl+Linke selektiert ein Objekt an seinem Aufhängepunkt.
    Ctrl+Rechte selektiert die Gruppe.
    Mittlere spiegelt das selektierte Objekt bzw. die Gruppe.
    Rechte dreht das selektierte Objekt bzw. die Gruppe.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Siehe auch
    GROUP, CUT, PASTE, ADD, INVOKE, POLYGON

    Mit dem COPY-Befehl lassen sich Objekte selektieren und anschließend an eine andere Stelle derselben Zeichnung kopieren, oder Objekte zwischen Bibliotheken kopieren. Beim Kopieren von Bauteilen generiert EAGLE einen neuen Namen und behält den Wert (Value) bei. Beim Kopieren von Signalen (Leiterbahnen), Bussen und Netzen wird der Name beibehalten. In allen anderen Fällen wird ein neuer Name generiert.

    Kopieren in die Zwischenablage

    Traditionell kopierte der COPY-Befehl in EAGLE nur Objekte, indem man sie mit der Maus anklickte und innerhalb der selben Zeichnung absetzte. Der COPY-Befehl kopierte auch Objekte zwischen Bibliotheken. Vor Version 6 kopierte er jedoch nicht die selektierte Gruppe in die Zwischenablage, so wie dies andere Windows-Programme tun. In EAGLE wurde hierfür der CUT-Befehl verwendet. Unglücklicherweise hat dies Windows-Anwender immer wieder irritiert, so dass seit Version 6 der COPY-Befehl auch die selektierte Gruppe von Objekten in die Zwischenablage der Systems kopiert, wobei die restliche Funktionalität voll erhalten bleibt. Falls Sie dies nicht wünschen, können Sie mit dem SET-Befehl
    SET Cmd.Copy.ClassicEagleMode 1
    
    das frühere Verhalten des COPY-Befehls (und auch des CUT-Befehls) wieder herstellen.

    Leitungen kopieren

    Kopiert man Leiterbahnen oder Polygone, die zu einem Signal gehören, dann gehört die Kopie zum selben Signal. Bitte beachten Sie, dass aus diesem Grund der DRC keinen Fehler feststellt, wenn z. B. zwei Leiterbahnen mit COPY überlappend plaziert werden.
    Wenn einer der Endpunkte der kopierten Leiterbahn auf dem Source-Segment liegt, so wird die Leiterbahn mit diesem Segment verbunden. Wenn nicht, wird dafür ein eigenes Segment angelegt (siehe auch 'Kopieren und Konnektivität').

    Bauteile kopieren

    Beim Kopieren eines Bauteils in einem Schaltplan wird immer eine komplette neue Instanz dieses Bauteils hinzugefügt, auch wenn nur ein einzelnes Gatter eines aus mehreren Gattern bestehenden Bauteils selektiert wurde. Zusätzlich zu dem selektierten Gatter werden all jene Gatter des zugehörigen Devices, welche Add-Level MUST oder ALWAYS haben, automatisch auch hinzugefügt.

    Wenn Sie lediglich ein weiteres Gatter eines aus mehreren Gattern bestehenden Bauteils verwenden wollen, sollten Sie stattdessen den INVOKE-Befehl benutzen.

    Bibliothekselemente kopieren

    Durch Angabe von COPY deviceset@[library], COPY package@[library] oder COPY symbol@[library] kann ein Device-Set, Package oder Symbol aus einer gegebenen Bibliothek in die aktuell geladene Bibliothek kopiert werden. library kann ein einfacher Bibliotheksname, eine Pfadangabe (siehe ADD-Befehl), der URN einer heruntergeladenen Verwaltete Bibliothek sein oder auch weggelassen werden. Ist es ein Bibliotheksname, wird im eingestellten Bibliothekspfad bzw. in den Bibliothekspfaden und unter den herutergeladenen Verwaltete Bibliotheken danach gesucht. Gibt man den URN an, wird unter den heruntergeladenen Verwaltete Bibliotheken gesucht. Wird er weggelassen, so wird die aktuell geladene Bibliothek als Quelle verwendet. Um Namenskonflikte zu vermeiden, können Sie die Endung .dev/.pac/.sym am Objektnamen anfügen. Wird zusätzlich noch name angegeben, so erhält das kopierte Objekt den angegebenen Namen. Dies kann ebenso über das Kontext-Menü der Bibliotheksobjekte oder über Drag&Drop aus der Baumansicht des Control Panels erfolgen.

    Beachten Sie bitte, dass etwaige existierende Bibliotheksobjekte (Device-Sets, Symbole oder Packages), die von dem kopierten Bibliotheksobjekt verwendet werden, automatisch upgedatet werden.

    Objekte aus Zeichnung kopieren

    Mit den Befehlen COPY device [name], COPY footprint [name], COPY package [name] oder COPY symbol [name] kann man ein Device-Set, einen Footprint, ein Package oder ein Symbol aus dem aktuellen Design (Schaltplan/Board) in die aktuell geöffnete Bibliothek kopieren. name ist der Bauteilname im Schaltplan (Part) bzw. im Layout (Element). COPY symbol [name] wird im Schaltplan-Editor, COPY footprint [name] und COPY package [name] im Layout-Editor und COPY device [name] in beiden Editor-Fenstern unterstützt. Das Device kann auch vom Layout-Editor aus kopiert werden, wenn der zugehörige Schaltplan vorhanden ist. Wird name nicht angegeben, kann man ein beliebiges Bauteil mit einem linken Mausklick im Design auswählen und in die Bibliothek kopieren.

    Eine Gruppe kopieren

    Das Kopieren einer Gruppe durch Anklicken mit der rechten Maustaste wird durch eine implizite CUT-Operation, gefolgt von einem PASTE realisiert.

    Objekte auf eine andere Seite kopieren

    Um Objekte auf eine andere Seite des gleichen Schaltplans zu kopieren, müssen Sie diese mit GROUP gruppieren, den COPY-Befehl (oder CUT) ausführen, auf die Ziel-Seite wechseln und dort PASTE machen.

    Kopieren und Konnektivität

    Das Kopieren von Netzen oder Leiterbahnen ändert nicht ihre Zugehörigkeit zu Segmenten oder Signalen. Wenn Sie beispielsweise ein Netz kopieren und dieses bei einem anderen Netz positionieren, wird es nicht mit diesem Netz verbunden. Das Gleiche gilt bei Segmenten desselben Netzes, Bussen etc. Um Verbindungen zu schaffen, verwenden Sie NAME oder JUNCTION.

    Kopieren mit Ctrl+C und freie Ankerpunkte

    Wenn man Objekte mit Ctrl+C kopiert, ist das Verhalten bei einem Objekt anders als bei mehreren Objekten (einer Gruppe). Wenn ein einzelnes Objekt kopiert wird, ist der Ursprung der Referenzpunkt beim späteren Einfügen. Wenn man eine Gruppe von Objekten kopiert, kann man einen Ankerpunkt festlegen, der hier als freier Anker (free anchor) bezeichnet wird. EAGLE merkt sich den Punkt bei der Auswahl der und verwendet diesen beim Einfügen. Die typische Anwendung ist, wenn man eine große Gruppe von Objekten kopieren und diese beim Einfügen relativ zum einem Punkt innerhalb der Gruppe wieder platzieren möchte (im Gegensatz zum standardmäßig verwendeten Ursprungspunkt).
    In diesem Fall verwenden Sie Ctrl+C nachdem Sie den Mauszeiger an einer Stelle Ihrer Wahl positioniert haben. Dieser Punkt wird dann beim Einfügen die Referenz. Anders ausgedrückt wird beim Einfügen (PASTE) der Punkt, den sich Ctrl+C gemerkt hat verwendet.

    CUT

    Funktion
    Gruppe in die Zwischenablage kopieren.
    Syntax
    CUT •
    CUT;
    Siehe auch
    PASTE, GROUP

    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 die selektierten Objekte in die Zwischenablage kopiert. CUT; setzt den Referenzpunkt automatisch etwa in der Mitte der selektierten Objekte (genauer: am nächstgelegenen Rasterpunkt). Jetzt kann man die Zeichnung wechseln und mit PASTE den Inhalt der Zwischenablage in die neue Zeichnung kopieren. Falls erforderlich, werden neue Namen generiert. Der Pufferinhalt bleibt erhalten und kann mit weiteren PASTE-Befehlen erneut kopiert werden.

    Referenzpunkt

    Wird beim CUT-Befehl mit der Maus ein Punkt angeklickt, dann befindet sich beim PASTE-Befehl der Mauszeiger an dieser Stelle der Gruppe (genauer: am nächstgelegenen Rasterpunkt). Ansonsten befindet sich der Mauszeiger bei PASTE etwa in der Mitte der Gruppe.

    Hinweis

    Im Gegensatz zu anderen (Windows-) Programmen entfernt der CUT-Befehl von EAGLE die markierte Gruppe nicht physikalisch aus der Zeichnung, sondern kopiert die Gruppe lediglich in die Zwischenablage. Unglücklicherweise hat dies Windows-Anwender immer wieder irritiert, so dass seit Version 6 der CUT-Befehl nicht mehr im Pulldown-Menü und der Toolbar mit den Befehls-Buttons erscheint (in der Befehlszeile und in Scripts ist er weiterhin verfügbar). Windows-Anwender werden einfach den COPY-Befehl verwenden um die selektierte Gruppe von Objekten in die System-Zwischenablage zu kopieren. Allerdings können sie dabei keinen Referenzpunkt für die Selektion der Gruppe festlegen. Sie wird immer in der Mitte ihres umschließenden Rechtecks selektiert. Die Verwendung eines expliziten Referenzpunktes ist nur möglich mit dem CUT-Befehl. Falls Sie dies nicht wünschen, können Sie mit dem SET-Befehl
    SET Cmd.Copy.ClassicEagleMode 1
    
    das frühere Verhalten des CUT-Befehls (und auch des COPY-Befehls) wieder herstellen.

    DELETE

    Funktion
    Löschen von Objekten.
    Syntax
    DELETE •..
    DELETE name ..
    DELETE SIGNALS
    Maustasten
    Shift+Linke löscht das übergeordnete Objekt in der Hierarchie.
    Ctrl+Linke löscht die Verbindungsstelle zweier Linien oder einen Port.
    Ctrl+Rechte löscht die Gruppe.
    Siehe auch
    RIPUP, DRC, GROUP

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

    Löschen von Linien-Verbindungsstellen

    Wird der DELETE-Befehl mit gedrückter Ctrl-Taste auf die Verbindungsstelle zweier Linien angewendet, so werden diese zu einer einzelnen, geradlinigen Linie zusammengefasst. Die beiden Linien müssen dazu im gleichen Layer liegen, die gleiche Breite, den gleichen Linien-Typ und runde Enden (im Falle von Kreisbögen) haben.

    Löschen von Polygon-Kanten

    Bei Polygonen löscht der DELETE-Befehl jeweils eine Ecke. Sind nur noch drei Ecken vorhanden, wird das ganze Polygon gelöscht.

    Löschen von Bauelementen

    Bauelemente auf der Top-Seite lassen sich nur löschen, wenn der tOrigins-Layer sichtbar ist und wenn (bei aktiver Forward&Back-Annotation) keine Signale mit dem Element verbunden sind (siehe auch REPLACE). Entsprechend lassen sich Bauelemente auf der Bottom-Seite nur löschen, wenn der bOrigins-Layer eingeblendet ist.

    Löschen von Junction-Punkten, Netzen und Bussen

    Es gelten folgende Regeln:

    Löschen von Supply-Symbolen

    Wird das letzte Supply-Symbol einer gegebenen Versorgungsspannung von einem Netzsegment, das den Namen dieses Supply-Symbols trägt, gelöscht, erhält dieses Netzsegment einen neuen, automatisch generierten Namen (sofern kein anderes Supply-Symbol mehr diesem Segment zugeordnet ist) oder den Namen eines noch verbleibenden anderen Supply-Symbols.

    Löschen von Signalen

    Selektiert man mit dem DELETE-Befehl Leiterbahnen oder Vias, die zu einem Signal gehören, dann sind drei Fälle zu unterscheiden: Werden Leiterbahnen oder Vias eines Signals gelöscht, das Polygone enthält, dann bleiben alle Polygone in dem Teil des Signals, der den ursprünglichen Namen behält (normalerweise der "größere" Teil).

    Alle Signale löschen

    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.

    Löschen von übergeordneten Objekten

    Wird ein Objekt mit gedrückter Shift-Taste angeklickt, so wird das in der Hierarchie nächsthöhere Objekt gelöscht. Im Einzelnen gilt dies für folgende Objekte:

    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 keiner Netzlinie verbunden ist
    Polygon-Linie Löscht das gesamte Polygon
    Netz/Bus-Linie 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.

    Funktion der Löschen-Taste mit der Option "Standard-Befehl GROUP" aktiviert"

    Wenn die Option Standard-Befehl GROUP aktiviert ist, kann man Objekte, die zur aktuellen Gruppe hinzugefügt wurden mit der Löschen-Taste wieder entfernen.

    DESCRIPTION

    Funktion
    Definiert die Beschreibung einer Zeichnung oder eines Bibliotheksobjekts.
    Syntax
    DESCRIPTION [ * ] [ description_string; ]
    DESCRIPTION ** [ description_string; ]
    Siehe auch
    CONNECT, PACKAGE, VALUE

    Mit diesem Befehl erzeugt oder editiert man die Beschreibung einer Zeichnung oder eines Bibliotheksobjekts.

    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.

    Normalerweise bearbeitet der DESCRIPTION-Befehl die Beschreibung des Objektes, welches gerade editiert wird, wie etwa ein Device Set, Package, Symbol, Board oder Sheet. Falls es in einer Bibliothek noch kein gerade editiertes Object gibt (wie es nach dem Laden einer Bibliothek der Fall ist), so wird die Bescheibung der Bibliothek bearbeitet.

    Um explizit die Beschreibung einer Bibliothek zu bearbeiten, auch wenn bereits ein Device Set, Package oder Symbol bearbeitet wird, geben Sie einen Stern ('*') als ersten Parameter des DESCRIPTION-Befehls ein. Auf diese Weise kann auch die Beschreibung eines Schaltplans angesprochen werden anstelle der des gerade bearbeiteten Sheets.

    Um die Beschreibung des aktuellen MODULE zu bearbeiten, geben Sie zwei Sterne ('**') als ersten Parameter des DESCRIPTION-Befehls ein.

    Beispiel

    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.

    DIMENSION

    Funktion
    Fügt Bemaßungen zu einer Zeichnung hinzu.
    Syntax
    DIMENSION [dtype] • •..
    Maustasten
    Mittlere wählt den Layer.
    Rechte ändert die Ausrichtung.
    Shift+Rechte kehrt die Richtung des Weiterschaltens der Ausrichtung um.
    Ctrl+Linke beim Beginn oder Ende einer Bemaßung selektiert kein Objekt.
    Siehe auch
    LINE, CHANGE, CIRCLE, HOLE

    Der DIMENSION-Befehl dient zum Bemaßen einer Zeichnung. Er kann entweder auf ein Objekt angewendet werden, oder beliebige Bemaßungen zeichnen.

    Wird mit dem ersten Mausklick ein Objekt selektiert, so wird eine dafür passende Bemaßung wie folgt gewählt:

    gerade Linie lineare Bemaßung, die den Abstand der Endpunkte der Linie anzeigt
    gebogene Linieradiale Bemaßung, die den Radius des Kreisbogens anzeigt
    Circle Durchmesser-Bemaßung, die den Durchmesser des Kreises anzeigt
    Hole Durchmesser-Bemaßung, die den Durchmesser des Lochs anzeigt

    Wird kein Objekt selektiert, oder wird eine Linie an einem ihrer Endpunkte selektiert, so wird ein Bemaßungs-Objekt gemäß dem aktuellen "dtype" Parameter erzeugt. Falls dies nicht die gewünschte Ausrichtung ist, so kann mit der rechten Maustaste durch die verschiedenen Ausrichtungstypen geschaltet werden.

    Um eine beliebige Bemaßung auch in der Nähe eines Objektes zeichnen zu können, welches normalerweise eine bestimmte Art von Bemaßung auslösen würde, drücken die beim ersten Mausklick die Ctrl-Taste. Dies kann auch bei der Verwendung des DIMENSION-Befehls in einem Script nützlich sein (durch Angabe des 'C'-Steuerzeichens in der ersten Koordinate), um sicherzstellen, dass die Bemaßung genau wie erwünscht erfolgt.

    Die Art und Weise, wie ein Bemaßungs-Objekt dargestellt wird (Linien, Einheit, Auflösung), kann mit "CHANGE DLINE/DUNIT" oder in seinem Eigenschaftendialog eingestellt werden. Beachten Sie dabei, dass der Parameter "Einheit" die Einheit vorgibt, in der die Zahlenwerte des Bemaßungs-Objekts angezeigt werden.

    Ausrichtung

    Jedes Bemaßungs-Objekt hat drei Koordinaten, die seine Referenzpunkte und ggf. einen Ausrichtungspunkt definieren. Wie diese Koordinaten konkret für die Darstellung eines Bemaßungs-Objekts verwendet werden hängt von der Ausrichtung ("dtype") ab.

    Parallel

    Eine parallel Bemaßung zeigt den Abstand zwischen ihrem ersten und zweiten Referenzpunkt an. Die Maßlinie verläuft parallel zu der Geraden durch die Referenzpunkte, und geht durch den Ausrichtungspunkt. Die genaue Position des Ausrichtungspunkts spielt keine Rolle, da nur sein Abstand zu der Geraden durch die Referenzpunkte benutzt wird. Wird eine parallele Bemaßung neu erzeugt oder verändert, so wird der Ausrichtungspunkt normalisiert, so dass er in der Mitte der Maßlinie liegt.

    Horizontal

    Wie parallel, aber die Maßlinie verläuft nur in X-Richtung und zeigt nur den X-Abstand der Referenzpunkte an.

    Vertical

    Wie horizontal, aber für Y.

    Radius

    Eine radius Bemaßung zeigt den Abstand zwischen ihrem ersten und zweiten Referenzpunkt an. Der erste Referenzpunkt liegt am Mittelpunkt des Kreisbogens, für den diese Bemaßung gezeichnet wurde. Der zweite Punkt liegt auf dem Kreisbogen. Liegt der Ausrichtungspunkt zwischen den beiden Referenzpunkten, so wird die Maßlinie zwischen den Referenzpunkten dargestellt, also "innerhalb" des Kreisbogens. Ansonsten wird die Maßlinie "außerhalb" des Kreisbogens dargestellt. Falls der Bemaßungstext zu lang ist um innerhalb des Radius-Bemaßung dargestellt zu werden, so wird die Maßlinie ebenfalls außen dargestellt. Eine Radius-Bemaßung zeigt automatisch ein Kreuz an ihrem ersten Referenzpunkt (dem Mittelpunkt des Keisbogens) an. Wird eine Radius-Bemaßung neu erzeugt oder verändert, so wird der Ausrichtungspunkt normalisiert, so dass er für eine "innere" Bemaßung in der Mitte der Maßlinie liegt, für eine "äußere" gleich hinter dem Maßpfeil.

    Diameter

    Eine diameter Bemaßung zeigt den Abstand zwischen ihrem ersten und zweiten Referenzpunkt an. Die beiden Punkte liegen an gegenüberliegenden Seiten auf dem Umfang des Kreises, so dass ihr Abstand dem Kreisdurchmesser entspricht. Liegt der Ausrichtungspunkt zwischen den beiden Referenzpunkten, so wird die Maßlinie zwischen den Referenzpunkten dargestellt, also "innerhalb" des Kreises. Ansonsten wird die Maßlinie "außerhalb" des Kreises dargestellt, so wie bei einer parallel Bemaßung. Falls der Bemaßungstext zu lang ist um innerhalb der Durchmesser-Bemaßung dargestellt zu werden, so wird die Maßlinie ebenfalls außen dargestellt. Eine Durchmesser-Bemaßung zeigt automatisch ein Kreuz an ihrem ersten Referenzpunkt (dem Mittelpunkt des Keises) an. Wird eine Durchmesser-Bemaßung neu erzeugt oder verändert, so wird der Ausrichtungspunkt normalisiert, so dass er für eine "innere" Bemaßung an der selben Stelle liegt wie der zweite Punkt, für eine "äußere" in der Mitte der Maßlinie.

    Angle

    Eine angle Bemaßung zeigt den Winkel zwischen ihrem zweiten und dritten Referenzpunkt an, gegen den Uhrzeigersinn gemessen vom ersten Referenzpunkt aus gesehen (dem Mittelpunkt des Kreisbogens). Wird eine Winkel-Bemaßung neu erzeugt oder verändert, so wird der zweite Referenzpunkt normalisiert, so dass er den gleichen Abstand vom ersten Punkt hat wie der dritte.

    Leader

    Eine leader Bemaßung kann dazu benutzt werden, um einen Hinweis in einer Zeichnung anzubringen. Am ersten Punkt befindet sich ein Pfeil, und der zweite und dritte Punkt definieren eine (geknickte) Linie. Es wird keine Maßzahl dargestellt. Sie können den TEXT-Befehl benutzen um beliebigen Text zu platzieren.

    Selektion

    Ein Bemaßungs-Objekt kann an jedem seiner drei Punkte selektiert werden.

    DISPLAY

    Funktion
    Auswählen der sichtbaren Layer.
    Syntax
    DISPLAY
    DISPLAY [option] layer_number..
    DISPLAY [option] layer_name..
    Siehe auch
    LAYER, PRINT

    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 BOTTOM
    
    Nach 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 -3
    
    In 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.

    Nicht definierte Layer

    Die Optionen '?' und '??' werden verwendet, zu kontollieren, was passiert, wenn ein nicht definierter Layer über DISPLAY aufgerufen wird. Jeder nicht definierte Layer, der einem '?' folgt, erzeugt eine Warnmeldung, die der Benutzer entweder bestätigen kann oder mit Cancel den DISPLAY-Befehl abbrechen kann. Nicht definierte Layer, die nach '??' folgen, werden kommentarlos ignoriert. Diese Optionen sind besonders beim Schreiben von Script-Dateien nützlich, die in der Lage sein sollen beliebige Dateien zu modifizieren, unabhängig davon welche Layer in der Datei letztendlich definiert wurden.
    DISPLAY TOP BOTTOM ? MYLAYER1 MYLAYER2 ?? OTHER WHATEVER
    
    Im 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.

    Pads und Vias

    Verwendet man Pads und Vias mit unterschiedlichen Formen in den einzelnen Layern, werden alle Formen, die in den sichtbaren (über DISPLAY aktivierten) Signal-Layern verwendet werden, übereinander dargestellt.

    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.

    Objekte selektieren

    Um Objekte selektieren zu können (z. B. mit MOVE, DELETE) muss der entsprechende Layer sichtbar sein. Elemente in Platinen lassen sich nur selektieren, wenn der tOrigins-Layer (bzw. bOrigins bei gespiegelten Elementen) sichtbar ist!

    Vermeiden Sie die Layer-Namen ALL und NONE, sowie Namen, die mit einem Minuszeichen beginnen.

    Parameter-Aliase

    Parameter-Aliase können dazu benutzt werden, bestimmte Parameter-Einstellungen des DISPLAY-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 DISPLAY-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.

    Die Syntax zur Bearbeitung dieser Aliase ist:

    DISPLAY = name parameter
    Definiert den Alias name, der in die angegebenen parameter expandiert wird. Der name darf aus beliebig vielen Buchstaben, Ziffern und Unterstrichen bestehen, und Groß-/Kleinschreibung spielt keine Rolle. Er muss mit einem Buchstaben oder Unterstrich beginnen und darf keines der Options-Schlüsselworte sein.
    DISPLAY = name @
    Definiert den Alias name, der in die aktuelle Parameter-Einstellung des Befehls expandiert wird.
    DISPLAY = ?
    Erfragt vom Benutzer einen Namen zur Definition eines Aliases für die aktuelle Parameter-Einstellung des Befehls.
    DISPLAY = name
    Öffnet den DISPLAY-Dialog und erlaubt es dem Benutzer einen Satz von Layern einzustellen, der als Alias unter dem angegebenen Namen gespeichert wird.
    DISPLAY = name;
    Löscht den Alias mit dem angegebenen Namen.
    DISPLAY name
    Expandiert den Alias mit dem angegebenen Namen und führt den DISPLAY-Befehl mit dem resultierenden Satz von Parametern aus. Der name kann abgekürzt werden und es dürfen andere Parameter vor und nach dem Alias angegeben werden (auch andere Aliase). Beachten Sie bitte, dass im Falle einer abgekürzten Eingabe Aliase Vorrang vor anderen Schlüsselwörtern des Befehls haben.
    Beispiel:

    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

    Funktion
    Design Rule Check (Platine prüfen)
    Syntax
    DRC
    DRC • • ;
    DRC LOAD|MERGE|SAVE filename;
    DRC *
    Siehe auch
    Design Rules, CLASS, SET, ERC, ERRORS

    Der DRC-Befehl prüft das Layout gegenüber einem gültigen Satz von Design Rules.

    Beachten Sie bitte, dass elektrisch nicht relevante Objekte (Linien 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. Die Option MERGE kann dazu verwendet werden, einzelne Design Rules Parameter zu überschreiben (die anderen bleiben dabei unverändert).

    Wird beim DRC-Befehl ein Stern ('*') als erster Parameter eingegeben, so öffnet sich der Design Rules Dialog und erlaubt ein bearbeiten der Design Rules, ohne dass beim Schließen des Dialogs ein DRC ausgeführt wird.

    SET-Befehle, die den DRC beeinflussen

    Der SET-Befehl kann dazu verwendet werden, um das Verhalten des DRC-Befehls zu verändern:
    SET DRC_FILL fill_name;
    
    Legt das für die DRC-Fehlerpolygone verwendete Füllmuster fest. Default: LtSlash.

    EDIT

    Funktion
    Lade-Befehl.
    Syntax
    EDIT name
    EDIT name.ext
    EDIT .ext
    EDIT .sX [ .sY ]
    EDIT name.mod
    EDIT name.m2
    EDIT .m3
    EDIT modX.m3 modY.m1
    EDIT;
    Siehe auch
    OPEN, CLOSE, BOARD, MODULE

    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.

    Der EDIT-Befehl wird auch zum Erzeugen oder Editieren eines Moduls in einem Schaltplan verwendet.

    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 name.dbl lädt einen Designblock in den Voransicht-Dialog
    EDIT name.dbl; lädt einen Designblock in den bzw. die Editor(en)
    EDIT urn lädt ein Package|Symbol|Device mit urn
    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)
    EDIT name.mod lädt (oder erzeugt) ein Modul in einem Schaltplan
    EDIT name.m2 lädt (oder erzeugt) Seite 2 eines Moduls
    EDIT .m3 lädt (oder erzeugt) Seite 3 des aktuellen Moduls
    EDIT .s2 modY.m1 verschiebt Seite 2 vor Seite 1 von Modul 'modY' und lädt sie
    EDIT modX.m3 modY.m1 verschiebt Seite 3 von Modul 'modX' vor Seite 1 von Modul 'modY' und lädt sie
    EDIT; zeigt das Inhaltsverzeichnis (in einer Bibliothek)

    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 .brd
    
    verwenden. Umgekehrt kommt man von der Platine in den entsprechenden Schaltplan mit
    EDIT .sch
    
    Auch vom Bibliotheks-Editor aus kann so zum Board- oder Schaltplan-Editor gewechselt werden.

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

    Will man Symbole, Devices oder Packages können erst dann editiert werden, wenn vorher eine Bibliothek mit dem OPEN-Befehl geöffnet wurde. Es kann dabei der Name oder der URN angegeben werden.

    Welches Verzeichnis?

    Der EDIT-Befehl holt Dateien aus dem Projektverzeichnis.

    EDITGROUP

    Function
    Edits existing persistent group(s) to add or remove object(s) to or from existing group(s).
    Syntax
    EDITGROUP ADD object_name .. TO group_name ..
    EDITGROUP REMOVE object_name .. FROM group_name ..
    See also
    NEWGROUP, UNGROUP, GROUPS VIEW

    The EDITGROUP command modifies a group to add (or remove) an individual object to (or from) existing groups.

    Options

    The following options can be selected with EDITGROUP command:

    Add To Adds object(s) to group(s)
    Remove From Removes object(s) from group(s)

    The above options are also available in right click context menu of selected object or in design manager GROUPS VIEW. The list of groups under above options is a union of groups of selected objects. When operated from the context menu, the command operates on all selected objects.

    EDIT3D

    Funktion
    Editieren des 3D-Modells eines Bauteils im Schaltplan/Layout-Editor
    Syntax
    EDIT3D
    Maustasten
    Linke wählt das Bauteil auf das der Befehl angewendet werden soll.

    ERC

    Funktion
    Electrical Rule Check (Prüfung auf elektrische Fehler).
    Syntax
    ERC
    Siehe auch
    DRC, ERRORS, Konsistenzprüfung

    Dieser Befehl prüft Schaltpläne auf elektrische Fehler. Die Ergebnisse werden im ERRORS Dialog angezeigt.

    Konsistenzprüfung

    Der ERC-Befehl führt auch eine Konsistenzprüfung zwischen Schaltplan und zugehöriger Platine durch, sofern die Board-Datei vor dem Start des ERC geladen worden ist. Als Ergebnis des ERC wird die automatische Forward&Back-Annotation ein- oder ausgeschaltet, abhängig davon, ob die Dateien konsistent sind oder nicht.

    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

    Funktion
    Zeigt Fehler, die vom ERC bzw. DRC gefunden wurden.
    Syntax
    ERRORS
    ERRORS CLEAR
    Siehe auch
    ERC, DRC

    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.

    Eine Meldung als behandelt markieren

    Der Behandelt Button markiert eine Meldung als behandelt. Sie ist zwar noch in der Liste enthalten, aber es erfolgt keine Fehleranzeige im Zeichenfenster mehr (ausser wenn der Listeneintrag selektiert wird). Hierdurch können Meldungen nach Behebung des jeweiligen Problems als "abgearbeitet" gekennzeichnet werden, ohne die Prüfung erneut durchzuführen. Nach dem nächsten ERC bzw. DRC verschwindet die Meldung entweder ganz, oder sie wird wieder als unbehandelt markiert, falls das Problem immer noch besteht.

    Eine Meldung billigen

    Falls ein Fehler bzw. eine Warnung nicht behoben werden kann, aber offensichtlich kein wirkliches Problem darstellt (was der Benutzer zu entscheiden hat), kann Sie durch Drücken des Buttons Billigen in den Abschnitt Gebilligt verschoben werden. Meldungen in diesem Abschnitt erzeugen keine Fehleranzeigen im Zeichenfenster (ausser wenn der Listeneintrag selektiert wird) und sind implizit als "behandelt" markiert. Falls nach dem nächsten ERC bzw. DRC die entsprechenden Probleme nicht mehr bestehen, werden die zugehörigen Meldung in diesem Abschnitt gelöscht. Alle gebilligten Meldungen werden in der Zeichnungsdatei mit abgespeichert um zu dokumentieren, welche Meldungen vom Benutzer explizit als unproblematisch eingestuft wurden. Beachten Sie bitte, dass Konsistenzfehler nicht gebilligt werden können - diese müssen auf jeden Fall behoben werden um die Forward&Back-Annotation zu aktivieren.

    Die Liste löschen

    Der Alle löschen Button löscht alle Einträge aus der Liste, bis auf die gebilligten Meldungen. Hierdurch können die Fehleranzeigen im Zeichenfenster abgestellt werden. Der nächste ERC bzw. DRC erzeugt die Meldungen wieder, sofern sie dann noch zutreffen.

    Die Liste kann auch durch Eingabe des Befehls

    ERRORS CLEAR
    
    gelöscht werden.

    EXPORT

    Funktion
    ASCII- und Grafik-Dateien erzeugen.
    Syntax
    EXPORT SCRIPT filename;
    EXPORT NETLIST filename;
    EXPORT SPICENETLIST filename;
    EXPORT NETSCRIPT filename;
    EXPORT PARTLIST filename;
    EXPORT PINLIST filename;
    EXPORT DIRECTORY filename;
    EXPORT IMAGE filename|CLIPBOARD [MONOCHROME|WINDOW] resolution;
    Siehe auch
    SCRIPT, RUN

    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:

    SCRIPT

    Die mit OPEN geöffnete Bibliothek wird als Script-Datei ausgegeben. Damit besteht die Möglichkeit, Bibliotheken mit einem Text-Editor zu bearbeiten und anschließend wieder einzulesen.

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

    NETLIST

    Gibt eine Netzliste des geladenen Schaltplans oder der geladenen Platine aus. Es werden nur Netze berücksichtigt, die mit Elementen verbunden sind.

    SPICENETLIST

    Erzeugt für den geladenen Schaltplan eine Netzliste im Spice-Format. Es werden nur Netze gelistet, die mit Elementen verbunden sind.

    NETSCRIPT

    Gibt die Netzliste des geladenen Schaltplans in Form einer Script-Datei aus, das in eine Platine (mit bereits plazierten Elementen bzw. mit durch DELETE SIGNALS gelöschten Signalen) eingelesen werden kann. Beachten Sie bitte, dass zum Einlesen des Scripts in die Platine kein mit dieser Platine konsistenter Schaltplan geladen sein darf.

    PARTLIST

    Gibt eine Bauteile-Liste des Schaltplans oder der Platine aus. Es werden nur Bauteile mit Pins/Pads berücksichtigt.

    PINLIST

    Gibt eine Liste mit den Pad- und Pin-Namen aller Bauteile aus, die zu jedem Pin die Direction sowie den Namen des angeschlossenen Netzes enthält.

    DIRECTORY

    Gibt das Inhaltsverzeichnis der gerade geöffneten Bibliothek aus.

    IMAGE

    Bei der Ausgabe eines IMAGE wird eine Grafikdatei mit der angegebenen Datei-Erweiterung erzeugt. Folgende Formate sind verfügbar:

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

    Weitere Formate

    Eine Reihe von weiteren Formaten wie DXF oder Hyperlynx können mit Hilfe von ULPs exportiert werden. Sie können von der Kommandozeile aus mit dem RUN-Befehl gestartet werden. Unter 'Datei/Exportieren' sind einige dieser Export-Formate ebenso verfügbar.

    FANOUT

    Funktion
    Erzeugt Fanouts für Bauteile und Signale
    Syntax
    FANOUT DEVICE device-name [direction]
    FANOUT SIGNAL signal-name [direction]
    Maustasten
    Links wählt das Device or Signal, für das das Fanout gemacht werden soll.
    Siehe auch
    BGA, ROUTE, CHANGE, DESIGN RULES,

    Der Befehl FANOUT erzeugt eine Leiterbahn mit einem Via am Ende aus den Pads eines gewählten Bauteils oder Signals. Es können nur SMD- oder BGA-Bauteile mit einem Fanout versehen werden. Bedrahtete Bauteile (mit Pads) werden ignoriert.

    Der Parameter WIDTH bestimmt die Breite der Leiterbahn, die verlegt wird und ist identisch mit dem Parameter des ROUTE-Befehls. Die Breite kann über den Befehl

    CHANGE WIDTH width;
    
    verändert werden, wobei width der gewünschte Wert in der aktuellen Einheit ist.

    Liegt der gewählte Wert unter dem in den Design-Regeln festgelegten Minimumwert, wird dieser Minimumwert gewählt. Somit werden Verletzungen der Design-Regeln vermieden.

    Das beim Fanout verwendete Via wird von den beiden Parametern Drill und Diameter in der Parameterleiste festgelegt. Wie auch beim Parameter WIDTH gilt bei Drill, dass der Mindestwert für Drill aus den Design-Regeln eingehalten wird. Der Bohrdurchmesser kann mit

    CHANGE DRILL drill-size;
    
    verändert werden.

    Der Mindestabstand zwischen dem Via, das platziert werden soll und dem SMD kann in den Design-Regeln unter Clearance, Same signal, SMD-Via bestimmt werden. Siehe auch DESIGN RULES.

    Sollte die Leiterbahn oder das Via des Fanouts eine Verletzung der Design-Regeln bewirken, wird dieses spezielle Fanout am Pad nicht ausgeführt. In solchen Situationen überprüfen Sie bitte Width und Drill Size Minimumwerte in den Design-Regeln und auch in den Netzklassen und treffen ggf. Anpassungen. Falls keine Änderungen an den Werten möglich sind, versuchen Sie doch die Fanout-Option ALTERNATE, die in solchen Fällen helfen könnte.

    Wird in der Parameterleiste das Icon Allow Violations aktiviert, ist es dem FANOUT-Befehl erlaubt Fanouts mit Vias zu erzeugen, auch wenn die Vias die Design-Regeln zu benachbarten Fanouts verletzen. Mit dieser Option kann man erkennen, warum bestimmte Vias nicht herausgeführt werden können und welche Regelverletzung zugrunde liegt. Diese Option ist standardmäßig deaktiviert; es sind keine Regelverletzungen erlaubt.

    Richtung

    Die Richtung des Fanouts relativ zum Bauteil kann über die Icons Fanout Direction in der Parameterleiste oder alternativ über folgende Optionen in der Kommandozeile bestimmt werden:

    OUT Fanouts zeigen nach außen und vom Bauteilmittelpunkt weg
    IN Fanouts zeigen nach innen zum Bauteilmittelpunkt hin
    ALTERNATE Fanouts wechseln bei benachbarten Pads zwischen OUT und IN

    Beispiel

    FANOUT DEVICE U3;
    FANOUT DEVICE U4 OUT;
    FANOUT SIGNAL GND ALTERNATE;
    FANOUT SIGNAL +5;
    

    FILTER

    Function
    Allows for command line control of filters.
    Syntax
    FILTER RUN [G] filter-name
    FILTER RUN '<expression>'
    See also Design Manager

    Allows for command line control of filters. The may supply the flag G to indicate if the filter is to be loaded from EAGLE settings (G = Global), otherwise it is assumed to be a local filter saved in the design. The second format allows for running a filter expression directly as a string literal.

    FRAME

    Funktion
    Rahmen in eine Zeichnung einfügen.
    Syntax
    FRAME [ columns [ rows ] ] [ borders ] • •
    Maustasten
    Mittlere wählt den Layer.
    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.

    Beispiel

    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.

    GATESWAP

    Funktion
    Äquivalente Gates vertauschen.
    Syntax
    GATESWAP • •..;
    GATESWAP gate_name gate_name..;
    Siehe auch
    ADD

    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

    Funktion
    Rasterdarstellung und -einheit einstellen.
    Syntax
    GRID option..;
    GRID;
    Tastatur
    F6: GRID; schaltet das Raster ein bzw. aus.
    Siehe auch
    SCRIPT

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

    Beispiele

    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.

    Parameter-Aliase

    Parameter-Aliase können dazu benutzt werden, bestimmte Parameter-Einstellungen des GRID-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 GRID-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.

    Die Syntax zur Bearbeitung dieser Aliase ist:

    GRID = name parameter
    Definiert den Alias name, der in die angegebenen parameter expandiert wird. Der name darf aus beliebig vielen Buchstaben, Ziffern und Unterstrichen bestehen, und Groß-/Kleinschreibung spielt keine Rolle. Er muss mit einem Buchstaben oder Unterstrich beginnen und darf keines der Options-Schlüsselworte sein.
    GRID = name @
    Definiert den Alias name, der in die aktuelle Parameter-Einstellung des Befehls expandiert wird.
    GRID = ?
    Erfragt vom Benutzer einen Namen zur Definition eines Aliases für die aktuellen Grid-Parameter.
    GRID = name
    Öffnet den GRID-Dialog und erlaubt es dem Benutzer einen Satz von Parametern einzustellen, der als Alias unter dem angegebenen Namen gespeichert wird.
    GRID = name;
    Löscht den Alias mit dem angegebenen Namen.
    GRID name
    Expandiert den Alias mit dem angegebenen Namen und führt den GRID-Befehl mit dem resultierenden Satz von Parametern aus. Der name kann abgekürzt werden und es dürfen andere Parameter vor und nach dem Alias angegeben werden (auch andere Aliase). Beachten Sie bitte, dass im Falle einer abgekürzten Eingabe Aliase Vorrang vor anderen Schlüsselwörtern des Befehls haben.
    Beispiel:

    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

    Funktion
    Definieren einer Gruppe.
    Syntax
    GROUP •..
    GROUP ALL
    GROUP;
    Maustasten
    Linke&Ziehen definiert eine rechteckige Gruppe.
    Shift+Linke fügt die neue Gruppe zu einer bestehenden hinzu.
    Ctrl+Linke invertiert die Gruppenzugehörigkeit des selektierten Objekts.
    Ctrl+Shift+Linke invertiert die Gruppenzugehörigkeit des in der Hierarchie nächsthöheren Objekts.
    Rechte schließt das Gruppen-Polygon.
    Ctrl+A startet den Befehl GROUP ALL um alle Objekte zu selektieren.
    Siehe auch
    CHANGE, CUT, PASTE, MIRROR, DELETE

    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.

    Die Auswahl von Attributen kann unterbunden werden indem man das Icon Enable Attribute Selection deaktiviert. Standardmäßig ist das Icon aktiviert und somit die Auswahl der Attribute erlaubt.

    Zur Gruppe gehören:

    • alle Objekte mit einem Aufhängepunkt, deren Aufhängepunkt innerhalb des Polygons liegt;
    • alle Objekte mit zwei Aufhängepunkten, von denen mindestens ein Endpunkt innerhalb des Polygons liegt;
    • alle Kreise, deren Mittelpunkt innerhalb des Polygons liegt;
    • alle Rechtecke, von denen mindestens ein Eckpunkt innerhalb des Polygons liegt.

    Gruppe bewegen

    Um eine Gruppe zu bewegen, verwendet man den MOVE-Befehl mit der rechten Maustaste. Bewegt werden alle Objekte, die vorher mit dem GROUP-Befehl selektiert worden sind. Linien, von denen nur ein Endpunkt innerhalb des Polygons liegt, werden an diesem Ende bewegt, während das andere fest bleibt. "Hängt" die Gruppe am Mauszeiger, lässt sie sich wiederum mit der rechten Maustaste rotieren.

    Die Gruppendefinition bleibt wirksam, bis eine neue Zeichnung geladen wird oder bis der Befehl

    GROUP;
    
    ausgeführt wird.

    Gruppe erweitern

    Wenn Sie bei einem beliebigen Mausklick zur Definition einer Gruppe die Shift-Taste drücken, so wird die neu definierte Gruppe zur bereits vorhandenen hinzugefügt (falls es bereits eine gibt).

    Einzelne Objekte

    Durch Anklicken eines einzelnen Objekts bei gedrückter Ctrl-Taste ist es möglich, die Gruppenzugehörigkeit dieses Objekts zu invertieren. Wird dabei zusätzlich auch noch die Shift-Taste gedrückt, so wird die Gruppenzugehörigkeit des in der Hierarchie nächsthöheren Objekts invertiert. Klicken Sie beispielsweise mit dem GROUP-Befehl bei gedrückter Ctrl- und Shift-Taste im Schaltpan auf eine Netz-Linie, so wird die Gruppenzugehörigkeit des gesamten Segments invertiert.

    Standard-Befehl GROUP

    Es gibt eine neue Benutzereinstellung, die GROUP zur Standardaktion macht. Man kann dann unter anderem durch Linksklick und Ziehen Objekte bewegen.

    Siehe Standard-Befehl GROUP für mehr Informationen.

    HELP

    Funktion
    Hilfe-Seite anzeigen.
    Syntax
    HELP
    HELP command
    Tastatur
    F1: HELP ruft die kontextsensitive Hilfe-Funktion auf.
    Dieser Befehl ruft ein Hilfe-Fenster mit Hinweisen zum Programm auf, die vom momentanen Status abhängig sind (kontextsensitiv).

    Wird im HELP-Befehl ein Befehlsname (command) angegeben, dann erhält man die Beschreibung dieses Befehls.

    Beispiel

    HELP GRID;
    
    Es erscheint die Beschreibung des GRID-Befehls.

    HOLE

    Funktion
    Bohrloch in Platine oder Package einfügen.
    Syntax
    HOLE drill •..
    Siehe auch
    VIA, PAD, CHANGE

    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 200 mm (ca. 7.7840 Zoll) betragen.

    Beispiel

    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/Leiterbahnen und Dimension-Linien damit auch zum Bohrloch einhält.

    In den Layern tStop und bStop erzeugen Holes die Lötstopmaske, deren Durchmesser sich aus den Design Rules ergibt.

    INFO

    Funktion
    Eigenschaften von Objekten anzeigen und verändern.
    Syntax
    INFO •..
    INFO name ..
    Siehe auch
    CHANGE, SHOW

    Der INFO-Befehl gibt zu einem Objekt umfassende Informationen, z.B. Linienbreite, 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.

    Die Auswahl von Attributen kann unterbunden werden indem man das Icon Enable Attribute Selection deaktiviert. Standardmäßig ist das Icon aktiviert und somit die Auswahl der Attribute erlaubt.

    Attribute von Bauteilen können dadurch selektiert werden, dass die Kombination aus Bauteilname und Attributname angegeben wird, wie etwa R5>VALUE.

    Die Koordinaten eines rotierten Rechtecks sind nicht veränderbar.

    Im Designblock-Editiermodus öffnet der Befehl INFO .dbl einen Dialog, in dem man die Beschreibung und die Attribute des aktuell editierten Designblocks modifizieren kann.

    INVOKE

    Funktion
    Bestimmte Gates von Bauteilen holen.
    Syntax
    INVOKE • orientation •
    INVOKE Part_Name Gate_Name orientation •
    Maustasten
    Mittlere spiegelt das Gate.
    Rechte dreht das Gate.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Siehe auch
    COPY, ADD

    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

    • den Namen eines Bauelements angibt (etwa INVOKE IC5) und das gewünschte Gate aus einem Popup-Menü auswählt,
    • den Elementnamen und den Gate-Namen angibt (etwa INVOKE IC5 POWER),
    • das vorhandene Gate mit der Maus anklickt und das gewünschte Gate aus einem Popup-Menü auswählt.
    Mit dem abschließenden Mausklick positioniert man das neue Gate.

    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.

    Gates auf verschiedenen Seiten

    Soll ein Gate aus einem Bauelement geholt werden, das sich auf einer anderen Seite des Schaltplans befindet, ist als Parameter der Name des Bauelements anzugeben. In diesem Fall zeigt die rechte Spalte des Popup-Menüs, auf welchen Seiten sich die verwendeten Gates befinden.

    JUNCTION

    Funktion
    Markierungspunkt für zusammengehörige Netze setzen.
    Syntax
    JUNCTION •..
    Siehe auch
    NET

    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

    Funktion
    Busse und Netze beschriften.
    Syntax
    LABEL [XREF] [orientation] • •..
    Maustasten
    Mittlere wählt den Layer.
    Rechte dreht das Label.
    Shift+Rechte kehrt die Richtung der Drehung um.
    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.

    Querverweis-Labels

    Wird das optionale Schlüsselwort XREF angegeben, so wird das Label ein "Querverweis-Label". Querverweis-Labels können in Schaltplänen mit mehreren Seiten benutzt werden, um anzuzeigen welches die nächste Seite ist, auf der ein bestimmtes Netz vorkommt (bitte beachten Sie, dass dies nur für Netze gilt, nicht für Busse!). Das XREF-Schlüsselwort ist hauptsächlich für die Verwendung in Scripts gedacht. Normalerweise richtet sich diese Einstellung danach, was vorher mit CHANGE XREF bzw. durch Anklicken der Xref-Schaltfläche in der Parameter-Toolbar gewählt wurde.

    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 Netzlinien. 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 einer Netzlinie platziert wird, verbindet sich mit der Linie, so dass sich die Linie 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 auswählen

    Im Gegensatz zu anderen Befehlen (wie etwa LINE) merkt sich der LABEL-Befehl den zuletzt verwendeten Layer selbst. Das hat den Vorteil, dass Labels immer im richtigen Layer landen, egal welche Layer andere Befehle verwenden. Der Nachteil ist, dass die übliche Vorgehensweise, den Layer in einem Script auszuwählen, wie etwa
    LAYER Layer;
    LINE (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.
    Die Befehle
    LABEL
    LAYER Layer;
    
    setzen den Layer für nachfolgende LABEL-Befehle.

    VPROBE

    Funktion
    Verbindet einen Spannungsmesspunkt mit einem Netz.
    Syntax
    VPROBE ..
    Siehe auch
    NET

    Mit Spannungsmesspunkten lassen sich die Spannungen in Netzknoten im Simulationsergebnis darstellen. Dieser Befehl ist als Eintrag im Kontext-Menü von Netzen im Schaltplan, über die Kommandozeile und als Befehls-Icon in der Menüleiste ausführbar.

    VPPROBE

    Funktion
    Verbindet einen Phasenlagenmesspunkt mit einem Netz.
    Syntax
    VPPROBE
    Siehe auch
    NET

    Mit Phasenlagenmesspunkten lassen sich die Phasenlagen von Spannungen in Netzknoten im Ergebnis der AC-Simulation darstellen. Dieser Befehl ist als Eintrag im Kontext-Menü von Netzen im Schaltplan, über die Kommandozeile und als Befehls-Icon in der Menüleiste ausführbar.

    LAUNCH

    Funktion
    Startet den Package-Generator und die web-basierte Package-Suche.
    Syntax
    LAUNCH PACKAGE3D-GENERATOR
    LAUNCH PACKAGE3D-WEB-SEARCH
    Siehe auch
    PACKAGE, COPY

    Dieser Befehl wird verwendet um den Package-Generator und die Package-Suche im Web zu starten. Er kann im Device-Editor angewendet werden, um eine neue Device-Variante anzulegen (entspricht dem PACKAGE-Befehl) oder auch im Library-Editor um ein Package in eine Bibliothek zu importieren (entspricht dem COPY-Befehl).

    LAYER

    Funktion
    Wechseln und Definieren von Layern.
    Syntax
    LAYER layer_number
    LAYER layer_name
    LAYER layer_number layer_name
    LAYER [??] -layer_number
    Siehe auch
    DISPLAY

    Zeichenebene auswählen

    Der LAYER-Befehl mit einem Parameter dient dazu, den (vorhandenen) Layer auszuwählen, in den gezeichnet werden soll. Wird der Befehl aus dem Menü ausgewählt, öffnet sich ein Popup-Menü, in dem man den gewünschten Layer selektieren kann. Bei Eingabe über die Tastatur ist als Parameter die Layer-Nummer oder der Layer-Name (wie er im Popup-Menü erscheint) zulässig.

    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 definieren

    Der LAYER-Befehl mit zwei Parametern dient dazu, einen neuen Layer zu definieren oder einen vorhandenen umzubenennen. Die Eingabe von z.B.:
    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.

    Top-Bottom-Paare

    Top-Bottom-Paare von Layern haben die Eigenschaft, mit dem MIRROR-Befehl sich aufeinander zu spiegeln (siehe "Vordefinierte EAGLE-Layer, nach Layer-Nummern geordnet" unten). Neben der benutzerspezifischen Verwendung der vordefinierten Layer tTest/bTest ist es auch möglich, ein benutzerdefiniertes Paar zu erzeugen wie etwa
    LAYER 53 tSomething;
    LAYER 54 bSomething;
    
    Dies ist verfügbar für die Layerpaare 53/54, 55/56, 57/58 und 59/60. Es sollte mit Vorsicht gemacht werden im Hinblick auf zukünftige EAGLE-Versionen.

    Layer löschen

    Der LAYER-Befehl mit dem der Layer-Nummer vorangestellten Minuszeichen löscht den Layer mit dieser Nummer, z. B.:
    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.

    Vordefinierte EAGLE-Layer, nach Layer-Nummern geordnet

    Layout

    1 Top Leiterbahnen oben
    2 Route2 Innenlage
    3 Route3 Innenlage
    4 Route4 Innenlage
    5 Route5 Innenlage
    6 Route6 Innenlage
    7 Route7 Innenlage
    8 Route8 Innenlage
    9 Route9 Innenlage
    10 Route10 Innenlage
    11 Route11 Innenlage
    12 Route12 Innenlage
    13 Route13 Innenlage
    14 Route14 Innenlage
    15 Route15 Innenlage
    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 (geschlitzte Pads)
    47 Measures Bemaßungen
    48 Document allgemeine Dokumentation
    49 Reference Passermarken
    51 tDocu Bauteiledokumentation oben
    52 bDocu Bauteiledokumentation unten

    Schaltplan

    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.

    LINE

    Funktion
    Linien zeichnen.
    Syntax
    LINE ['signal_name'] [width] • •..
    LINE ['signal_name'] [width] [ROUND | FLAT] • [curve | @radius] •..
    Maustasten
    Mittlere wählt den Layer.
    Rechte ändert den Knickwinkel (siehe
    SET Wire_Bend).
    Shift+Rechte kehrt die Richtung des Weiterschaltens des Knickwinkels um.
    Ctrl+Linke am Beginn einer Linie schnappt zum nächstgelegenen existierenden Linien-Endpunkt.
    Ctrl+Rechte schaltet zwischen korrespondierenden Knickwinkeln hin und her.
    Ctrl+Linke beim Absetzen eines Linien-Endpunktes definiert den Kreisbogen-Radius.
    Siehe auch MITER, SIGNAL, ROUTE, CHANGE, NET, BUS, DELETE, RIPUP, ARC

    Der LINE-Befehl plaziert Linien (Wires) 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 einer Linie mit gedrückter Ctrl-Taste gestartet, so schnappt der Startpunkt der neuen Linie an die Koordinaten der nächstgelegenen existierenden Linie. Dies ist besonders nützlich, wenn die existierende Linie außerhalb des aktuellen Rasters liegt. Hierbei werden auch die Breite, der Layer und der Linientyp von der existierenden Linie übernommen. Falls der aktuelle Knickwinkel 7 ("Freihand") ist, so setzt die neue Linie die existierende bündig fort.

    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 Linien 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 eine Linie so plaziert wird, dass sie unterschiedliche Signale verbindet. Bitte führen Sie deshalb einen Design Rule Check durch, nachdem Sie den LINE-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 200 mm (ca. 7.7840 Zoll). Die Linienbreite bleibt für nachfolgende Operationen erhalten.

    Die Breite lässt sich auch zu jeder Zeit mit dem Befehl

    CHANGE WIDTH breite •
    
    ändern oder voreinstellen.

    Bitte verwenden Sie den LINE-Befehl nicht für Netze und Busse sowie für Luftlinien. Siehe NET, BUS und SIGNAL.

    Linienarten

    Linien können in folgenden Arten (styles) gezeichnet werden::
    • Continuous - durchgezogen
    • LongDash - (lang) gestrichelt
    • ShortDash - (kurz) gestrichelt
    • DashDot - Strich-Punkt-Linie
    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.

    Signale in Top-, Bottom und Route-Layern

    Linien in den Layern Top, Bottom, Route2.. werden als Signale behandelt. Wird eine Linie in einem der Signal-Layer an einem bestehenden Signal angesetzt, so gehört der gesamte gezeichnete Linien-Zug zu diesem Signal (nur, wenn die Linien-Enden bzw. das Linien-Ende und der Pad-Mittelpunkt genau übereinstimmen). Setzt man das Ende einer Linie an einem anderen Signal ab, fragt EAGLE zur Bestätigung nach, ob die beiden Signale wirklich miteinander verbunden werden sollen. Jedes Geradenstück wird von EAGLE (z. B. beim RIPUP-Befehl) als eigenes Objekt behandelt.

    Kreisbögen zeichnen

    Linien und Kreisbögen sind im Grunde die selben Objekte, so dass man einen Kreisbogen entweder mit dem ARC-Befehl zeichnen kann, oder indem man die nötigen Parameter zum LINE-Befehl hinzufügt. Damit aus einer Linie ein Kreisbogen wird, benötigt dieser entweder den curve Parameter, der angibt wie stark der Kreisbogen gekrümmt sein soll, oder den @radius Parameter, der den Radius des Kreisbogens bestimmt (beachten Sie den '@', welcher nötig ist, um curve und radius unterscheiden zu können).

    Der gültige Bereich für curve ist ]-360..+360[ (also ohne die Grenzen +-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. Es können keine Vollkreise auf diese Art erzeugt werden (verwenden Sie dazu den CIRCLE-Befehl). 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 einer LINE 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

    LINE (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

    LINE (0 0) @+100 (0 200);
    
    einen Halbkreis vom Punkt (0 0) nach (0 200) (mit Radius 100), entgegen dem Uhrzeigersinn. Liegt der Endpunkt der Linie 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 Linien-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 LINE-Befehl zeichnen zu können (was insbesondere bei der Generierung von Script-Dateien wichtig ist) sind die Schlüsselworte ROUND und FLAT im LINE-Befehl ebenfalls erlaubt. Beachten Sie aber, dass diese nur bei echten Kreisbögen Anwendung finden (gerade Linien haben immer runde Enden). Standardmäßig haben mit dem LINE-Befehl erzeugte Kreisbögen runde Enden.

    LOCK

    Funktion
    Verriegelt die Position und Orientierung eines Objekts im Board
    Syntax
    LOCK
    LOCK *;
    LOCK -*;
    LOCK name;
    LOCK -name
    LOCK LAYER layer_name;
    LOCK LAYER -layer_name;
    LOCK LAYER layer_number;
    LOCK LAYER -layer_number;
    Maustasten
    Ctrl+Rechte wendet den Befehl auf eine Gruppe an.
    Shift+Linke entriegelt das Objekt.
    Ctrl+Shift+Rechte entriegelt in der Gruppe alle Objekte mit der Eigenschaft "Verriegelt"
    Siehe auch
    MIRROR, MOVE, ROTATE REPOSITION

    Der LOCK-Befehl kann auf Bauteile, Wires, Vias, Polygone und Holes in einem Board angewendet werden und verhindert das Bewegen, Drehen und Spiegeln des Objekts. Das kann beispielsweise für Steckverbinder sinnvoll sein, die an einer fixen Position im Layout platziert werden und nicht mehr unabsichtlich verschoben werden dürfen. Ist der LOCK-Befehl aktiviert, kann man über drei Schaltflächen Alle Objekte verriegeln, Alle Objekte entriegeln oder Alle Objekte im aktiven Layer verriegeln.

    Kommandozeile
    In der Kommandozeile können verschieden Aktionen ausgeführt werden:

    • "LOCK" verriegelt ein Objekt mit Linksklick.
    • "LOCK *;" verriegelt alle Objekte.
    • "LOCK -*;" entriegelt alle Objekte.
    • "LOCK name;" verriegelt das Bauteil mit dem Name name.
    • "LOCK -name;" entriegelt das Bauteil mit dem Namen name.
    • "LOCK LAYER layer_name;" verriegelt alle Objekte im Layer mit dem Namen layer_name.
    • "LOCK LAYER -layer_name;" entriegelt alle Objekte im Layer mit dem Namen layer_name.
    • "LOCK LAYER layer_number;" verriegelt alle Objekte im Layer mit der Nummer layer_number.
    • "LOCK LAYER -layer_number;" entriegelt alle Objekte im Layer mit der Nummer layer_number.

    Als Indikator für ein verriegeltes Bauteil wird der Aufhängepunkt des Bauteils als 'X' dargestellt. Auf verriegelten Wires, Vias und Holes wird ein Schlosssymbol angezeigt.

    Bewegt man eine Gruppe, die verriegelte Objekte enthält, bewegen sich diese nicht mit.

    Freie Textattribute eines Bauteils können einzeln, aber nicht mit der Gruppe bewegt werden.

    Bauteile können auch über den Namen ausgewählt werden. Das ist besonders hilfreich, wenn diese außerhalb des aktuell sichtbaren Zeichenbereichs liegen.

    Ein verriegeltes Objekt kann entriegelt werden, wenn man bei aktivem LOCK-Befehl und gedrückter Shift-Taste auf das Objekt klickt.

    MAPTOMODEL

    Funktion
    Ordnet einem Device ein Spice-Subcircuit-Modell, die Modell-Parameter (model card) oder ein natives Modell zu.
    Syntax
    MAPTOMODEL name ..
    Siehe auch
    ADDMODEL, SIM, EXPORT

    Der MAPTOMODEL-Befehl öffnet einen Dialog in dem man einem Bauteil ein bestimmtes Modell, eine Modellbeschreibung oder ein intrisisches Spice-Modell zuordnet. Wenn das Device noch kein spice-kompatibles Device ist, wird zunächst der ADDMODEL-Befehl im Hintergrund aufgerufen. MAPTOMODEL zeigt einen Dialog, in dem der Anwender das zu verwendende Modell festlegt und auch die Pins des Bauteils den Eingängen des Modells zuordnet. Hinweis: Wenn Gate ausgewählt wird, wird das Spice-Modell allen Gates im Device-Set zugeordnet.

    MANUFACTURING

    Funktion
    Blendet den Manufacturing-Dialog ein oder aus.
    Syntax
    MANUFACTURING;
    MANUFACTURING EXPORT;
    MANUFACTURING CAM;

    Über den MANUFACTURING-Befehl erreicht man den Manufacturing-Dialog und den CAM-Exporter. MANUFACTURING (ohne Parameter) blendet das Manufacturing-Fenster (Flyout) im Layout-Editor ein oder aus. Im Manufacturing-Flyout findet man fertigungsrelevante Informationen zum Board, wie zum Beispiel die Boardkontur, Lage und Durchmesser von Bohrungen, zusätzliche Ansichten... MANUFACTURING CAM öffnet den CAM-Prozessor und MANUFACTURING EXPORT erzeugt ein ZIP-Archiv mit Gerber- and Excellon-Daten der aktuell geladenen Zeichnung. Diese Befehle sind nur im Layout-Editor verfügbar.

    MARK

    Funktion
    Marke in der Zeichenfläche definieren.
    Syntax
    MARK •
    MARK;
    Siehe auch
    GRID

    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.

    MEANDER

    Funktion
    Gleicht Längenunterschiede zwischen Differential Pairs aus und verlängert Signal-Segmente.
    Syntax
    MEANDER [length] • ..
    Maustasten
    Ctrl+Linke misst die Länge des selektierten Signal-Segments.
    Ctrl+Shift+Linke misst die maximale Länge der selektierten Signal-Segmente.
    Rechte schaltet um zwischen symmetrischen und asymmetrischen Mäandern.
    Siehe auch
    ROUTE

    Der MEANDER-Befehl dient zum Ausgleichen der Länge von Signalen eines Differential Pairs. Hierfür klicken Sie auf eine Leiterbahn eines Differential Pairs und bewegen den Mauszeiger weg vom Anklickpunkt. Wenn die beiden Signale unterschiedlich lang sind und der Anklickpunkt und die aktuelle Mausposition genügend weit voneinander entfernt sind, wird die Leiterbahn in Form eines "Mäanders" gezeichnet, welche die Länge des kürzeren Signal-Segments erhöht. Eine Anzeige am Mauszeiger zeigt die Ziel-Länge an (das ist die Länge des längeren Signal-Segments), sowie die Abweichung (in Prozent) der beiden Signale vom Ziel-Wert.

    Der Mäander beginnt am ersten Anklickpunkt und erstreckt sich bis zum zweiten Punkt, an den der Mauszeiger bewegt wird. Die maximale Breite des Mäanders wird durch den Abstand des Mauszeigers von der selektierten Leiterbahn bestimmt.

    Falls ein einzelner Mäander nicht ausreicht, um die Längen auszugleichen, können Sie weitere Mäander an anderen Stellen einfügen.

    Zu jeder Zeit können Sie in der Kommandozeile einen Wert length für die Ziel-Länge eingeben. Das ist für alle Signale, nicht nur für Differential Pairs, anwendbar.

    Beim Mäandrieren eines Differential Pairs mit vorgegebenem Ziel-Wert wird zuerst versucht, den Längenunterschied der beiden Signal-Segmente des Differential Pairs auszugleichen, und anschließend die Gesamtlänge beider Segmente auf den gegebenen Wert zu erhöhen.

    Um die Ziel-Vorgabe zurückzusetzen können Sie entweder den MEANDER-Befehl neu starten, oder in der Kommandozeile einen Wert von 0 eingeben.

    Signal-Längen messen

    Wenn Sie mit gedrückter Ctrl-Taste auf eine Leiterbahn klicken, so wird die Länge dieses Signal-Segments berechnet und am Bildschirm in einer kleinen Anzeige nahe der Mausposition angezeigt. Damit können Sie die Länge eines Signal-Segments messen und diesen Wert als Zielvorgabe für das Mäandrieren eines anderen Segments verwenden.

    Führen Sie die Messung mit gedrückten Ctrl+Shift-Tasten durch, so wird die maximale Länge dieses und aller vorhergehenden Segmente genommen. Damit können Sie auf einfache Weise die maximale Länge mehrerer Bus-Signale bestimmen und dann jedes davon auf diese Länge bringen.

    Symmetrische und asymmetrische Mäander

    Standardmäßig wird ein Mäander symmetrisch generiert, das heißt er ersteckt sich zu beiden Seiten entlang der selektierten Leiterbahn. Falls das nicht das ist, was Sie brauchen (entweder weil nur auf einer Seite Platz ist, oder weil die längere der beiden Leiterbahnen eines Differential Pairs nicht noch weiter verlängert werden soll) können Sie durch Drücken der rechten Maustaste auf den asymmetrischen Modus umschalten. Die aktuelle Mausposition entscheidet darüber, auf welcher Seite der Leiterbahn der Mäander angelegt wird. Bewegen Sie die Maus hin und her um die passende Position zu finden.

    Längen-Toleranz

    Der Wert, der in den Design Rules unter "Misc/Max. Längenunterschied in Differential Pairs" definiert ist, wird dazu benutzt, die Farbe der Anzeige der Längenabweichungen beim Zeichnen eines Mäanders zu bestimmen. Wird die Prozentzahl in Grün angezeigt, so liegt das betreffende Segment innerhalb der gegebenen Toleranz. Ansonsten wird sie in Rot dargestellt. Der Standardwert für diesen Parameter ist 10mm.

    MENU

    Funktion
    Text-Menüleiste verändern.
    Syntax
    MENU option ..;
    MENU;
    Siehe auch
    ASSIGN, SCRIPT

    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 | submenu | delimiter
    command   := [ icon ] text1 [ ':' text2 ]
    submenu   := [ icon ] text '{' option [ '|' option ] '}'
    icon      := '[' filename ']'
    delimiter := '---'
    
    Eine Option des MENU-Befehls kann ein einfacher Befehl sein, wie z. B.
    MENU Display Grid;
    
    der die Befehle Display und Grid als Inhalt des Text-Menüs definiert. Display und Grid werden sowohl als Menütext als auch als Kommando interpretiert.
    Sie kann auch 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 (text2, s.o.) der entsprechenden Option ausgeführt.
    Sie kann auch 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.
    Das '|' ist als Trennzeichen nur bei Untermenü-Einträgen erforderlich (submenu, s.o.).

    Die besondere Option '---' kann man verwenden, um einen Trennstrich im Menü zu erzeugen. Das fördert die Übersichtlichkeit im Menü.

    Ein Befehls-Button kann ein Icon anzeigen, indem dem Button-Text der Dateiname eines Icons in eckigen Klammern vorangestellt wird, wie in

    MENU '[/path/to/myicon.png] Set a fine grid : Grid inch 0.001;';
    
    Hier zeigt der Button nur das angegebene Icon an und "Set a fine grid" wird als "Direkthilfe" verwendet, die angezeigt wird, wenn der Mauszeiger über den Button bewegt wird. Der Dateiname muss nicht zusätzlich in Hochkommas gesetzt werden (etwa um Leerzeichen zu maskieren).
    Wird ein Icon in einem Untermenü verwendet, etwa in
    MENU 'Grid { [/path/to/myicon.png] Set a fine grid : Grid inch 0.001; }';
    
    so werden, wie bei anderen Menüs auch, sowohl das Icon als auch der Text angezeigt.
    Enthält der Dateiname des Icons keinen Verzeichnispfad, so wird es im aktuellen Arbeitsverzeichnis und im EAGLE 'bin'-Verzeichnis gesucht.

    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;\
               }';
    

    Beispiele

    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.

    Komplexes Beispiel:

    MENU '[draw.png] Draw {\
                            Line {\
                                   Continous : CHANGE STYLE Continuous; LINE |\
                                   DashDot :  CHANGE STYLE DashDot; LINE |\
                                   Help : HELP LINE;\
                                 }|\
                            Rectangle {\
                                        RECT |\
                                        Help : HELP RECT; \
                                      }\
                           }\
          [export.png] Export {\
                                Script : EXPORT SCRIPT |\
                                Image : EXPORT IMAGE\
                              }\
          MyScript : SCRIPT MyScript.scr;';
    
    Dieses Menü besteht aus den 3 Einträgen Draw, Export und MyScript, wobei Draw und Export Untermenüs haben und mit Icons versehen sind. Draw besteht aus den Untermenüs Line und Rectangle, wobei Line aus den Einträgen Continous, DashDot und Help und Rectangle aus den Einträgen RECT (Text und Befehl RECT) und Help zusammengesetzt sind.
    Das Untermenü von Export hat die Einträge Script und Image.

    MIRROR

    Funktion
    Objekte spiegeln.
    Syntax
    MIRROR •..
    MIRROR name..
    Maustasten
    Ctrl+Rechte spiegelt die Gruppe.
    Siehe auch
    ROTATE, LOCK, TEXT

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

    Gruppe spiegeln

    Will man eine Gruppe spiegeln, definiert man zuerst die Gruppe mit dem GROUP-Befehl, dann selektiert man den MIRROR-Befehl und klickt mit der rechten Maustaste die Gruppe an. Sie wird dann um die senkrechte Achse durch den dem Mauszeiger nächstgelegenen Rasterpunkt gespiegelt.

    Lines, Circles, Pads und Polygone lassen sich nicht explizit spiegeln (als Bestandteile von Gruppen werden sie mitgespiegelt).

    Text spiegeln

    Text auf der Lötseite (Layer 'Bottom' und 'bPlace') wird automatisch gespiegelt, so dass er dann später, wenn man die Platine von der Lötseite her betrachtet, richtig lesbar ist.

    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

    Funktion
    Linien-Verbindungsstellen abschrägen.
    Syntax
    MITER [radius] •..
    Maustasten
    Linke&Ziehen modifiziert die Abschrägung dynamisch.
    Rechte schaltet zwischen runder und gerader Abschrägung hin und her.
    Siehe auch
    SPLIT, LINE, ROUTE, POLYGON

    Der MITER-Befehl dient dazu die Verbindungsstelle zweier Linien abzuschrägen. Die beiden existierenden Linien müssen dazu auf dem gleichen Layer liegen, die gleiche Breite und den gleichen Linien-Style haben.

    Abschrägen eines Punktes

    Wenn Sie einen Punkt selektieren, an dem sich genau zwei geradlinige Linien treffen, so wird eine zusätzliche Linie zwischen diesen beiden Linien eingefügt, dessen Abmessungen sich aus dem angegebenen radius ergeben. Wenn sie Click&Drag mit der linken Maustaste an einem solchen Punkt machen, können Sie die zur Abschrägung verwendete Linie dynamisch definieren.

    Abschrägen einer Linie

    Wenn sie eine Linie (die auch ein Kreisbogen sein kann) in der Mitte zwischen seinen Endpunkten selektieren, und diese Linie mit genau zwei anderen, geradlinigen Linien (jeweils eine an jedem Ende) verbunden ist, so werden die Abmessungen dieser Linie gemäß dem angegebenen radius neu berechnet. Wenn sie Click&Drag mit der linken Maustaste an einer solchen Linie machen, können Sie die zur Abschrägung verwendete Linie dynamisch definieren.

    Geradlinige und runde Abschrägung

    Ist der radius positiv, so ist die eingefügte Linie ein Kreisbogen mit dem gegebenen Radius; falls er negativ ist wird eine geradlinige Linie eingefügt (stellen Sie sich das '-' Zeichen als Indikator für "geradlinig" vor). Durch Drücken der rechten Maustaste können Sie zwischen runder und geradliniger Abschrägung hin und her schalten.

    Miter-Radius und Linien-Knickwinkel

    Der radius, den Sie mit dem MITER-Befehl einstellen, wird auch in allen anderen Befehlen verwendet, die Linien zeichnen, falls der Knickwinkel einer der 90- bzw. 45-Grad Winkel ist. Bei runder Abschrägung betrifft dies sowohl 90- als auch 45-Grad Winkel, bei geradliniger Abschrägung nur die 90-Grad Winkel.

    MODULE

    Funktion
    Erzeugen eines Moduls.
    Modul-Instanz in eine Schaltplanseite einfügen.
    Syntax
    MODULE [[width height] 'module_name'] ['prefix*'] [+offset] [orientation] •..
    MODULE [[width height] 'module_name'] ['module_instance_name'] [+offset] [orientation] •..
    MODULE 'variant_name@module_name' ['module_instance_name'] [+offset] [orientation] •..
    Maustasten
    Mittlere spiegelt die Modul-Instanz.
    Rechte dreht die Modul-Instanz.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Siehe auch
    NAME, PORT, PREFIX

    Der MODULE-Befehl wird verwendet, um Module zu erzeugen und um Module mit Hilfe von Modul-Instanzen im Schaltplan zu verwenden.

    Mit +offset kann für die aktuelle Modul-Instanz ein Offset zur Namensgebung der Bauteile angegeben werden. Der Wert muss ein Vielfaches von 100 sein (z.B. +100). Beachten Sie, dass dies nur für Modul-Instanzen im Hauptschaltplan unterstützt wird (Details siehe unten).

    Als Option kann die Schreibrichtung orientation auch textuell angegeben werden. Die entsprechenden Schlüsselwörter sind im ADD-Befehl aufgeführt (R0, R90 usw.).

    Der PORT-Befehl wird verwendet, um Ports zu einem Modul hinzuzufügen.

    Eine Modul-Instanz fügt alle Netze und Bauteile des Moduls zum Board hinzu. Netznamen werden zusammengesetzt aus dem Modul-Instanz-Namen und dem Namen des Netzes im Modul (z.B. 'MODULE1:N$1'). Wenn ein Netz durch einen PORT exportiert wird, überschreibt ein am Port angeschlossenes Netz den Modul-internen Netznamen. Bauteilnamen von Modul-Instanzen mit einem Offset ungleich 0 werden mit diesem Offset beaufschlagt (z.B. 'R17' wird mit Offset '100' zu 'R117', Details siehe unten). Wenn kein Offset gesetzt ist, werden auch diese mit dem Modul-Instanz-Namen zusammengesetzt (z.B. 'MODULE1:R17').

    Um eine bestimmte Bestückungsvariante des Moduls zu wählen, muss ihr Name dem Modulnamen vorangestellt werden (z.B. 'V1@ABC').

    Namen, Offset-Notation

    Bei der Moduldefinition kann ein Präfix angegeben werden, das zur automatischen Generierung der Modul-Instanz-Namen verwendet wird. Zur syntaktischen Unterscheidung in der Befehlszeile muss dem Präfix ein Stern ('*') folgen.

    Wird kein Präfix und auch kein Name für die Modul-Instanz angegeben, wird zur Generierung der Modul-Name als Präfix verwendet.

    Die Modul-Instanz-Namen können mit NAME verändert werden.

    Die Offset-Notation für Modul-Instanzen hat den Vorteil, dass kürzere Namen erzeugt werden, aber sie ist mit Vorsicht zu benutzen, da sie zu Namenskonflikten bei den Elementen führen kann.
    Beispiel:

    Wenn Sie die Bauteile R1-R9 in einem Modul haben, und auf der Hauptebene des Schaltplans die Bauteilnamen (bzw. Elementnamen) R201-R209 schon benutzt werden, ist es nicht möglich, eine Modul-Instanz MI von M mit Offset 200 anzulegen, da die generierten Elemente ebenfalls die Namen R201-R209 beanspruchen würden. EAGLE überprüft und verhindert solche Fälle mit einer Fehlermeldung. Der Konflikt kann leicht gelöst werden durch Verwendung eines anderen positiven Offsets oder Offset 0 (also der zusammengesetzten Notation).

    Selbst wenn die Offset-Notation konfliktfrei funktioniert, kann sie auch anderweitig verwirrend sein: wenn Sie im oberen Beispiel den Offset auf 300 ändern, aber auf der Hauptebene Bauteile mit Namen R310, R311 usw. haben, ist es schwierig zu erkennen, dass diese bauteile NICHT zu MI gehören, sondern zur Hauptebene. Deswegen wird empfohlen, die Offsets groß genug zu wählen um solche Missverständnisse zu vermeiden.

    Je nachdem was Sie vorhaben, kann die zusammengesetzte Notation unter Verwendung kurzer Modul-Instanz-Namen die bessere Alternative sein.

    Ebenfalls um Missverständnisse zu reduzieren, kann jeder Offset im ganzen Schaltplan nur einmal benutzt werden. Der Eigenschaften-Dialog für Modul-Instanzen erlaubt die Änderung des Offsets nur auf solche Werte, die noch nicht vergeben sind (oder auf 0).

    Tiefere Hierarchien

    Modul-Instanzen können auch in eine Modulseite platziert werden. Auf diese Weise kann eine Hierarchie beliebiger Tiefe erzeugt werden.

    Offsets > 0 werden in tieferen Hierarchiestufen nicht unterstützt.
    Beispiel:
    Die Instanz F0 benutzt FILTER mit Offset 100, Instanz SUB befindet sich in FILTER und benutzt SUBMODULE mit Offset 0. Für die Elemente aller Bauteile in FILTER wird Offset 100 verwendet, für die Elemente zu allen Bauteilen in SUBMODULE wird die zusammengesetzte Notation wie bei einem Verzeichnispfad verwendet, ebenso für die Signale zu den Netzen in SUBMODULE. So wird z.B. der Name für das Element, welches C1 in SUBMODULE entspricht, zu F0:SUB:C1. (Anmerkung: Wenn Offsets auch in tieferen Hierarchien zulässig wären, würde dies zu weiteren möglichen Konflikten und Missverständnissen führen).

    Abmessungen

    Die Abmessungen eines Moduls können bei der Definition durch width und height angegeben werden.

    Editieren

    Der MOVE-Befehl kann zum Bearbeiten der Modul-Darstellung verwendet werden. Mit Ctrl+Linke lassen sich die Ränder selektieren.

    MOVE

    Funktion
    Bewegen von Objekten.
    Syntax
    MOVE • •..
    MOVE name •..
    Maustasten
    Ctrl+Linke selektiert ein Objekt an seinem Aufhängepunkt bzw. verändert es (siehe Anmerkung).
    Shift+Linke selektiert das ganze Polygon (siehe Anmerkung).
    Ctrl+Rechte selektiert die Gruppe.
    Linke&Ziehen bewegt das Objekt sofort.
    Ctrl+Rechte&Ziehen bewegt die Gruppe sofort.
    Mittlere spiegelt das Objekt bzw. die Gruppe.
    Rechte dreht das selektierte Objekt bzw. die Gruppe.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Siehe auch
    GROUP, LOCK, RATSNEST

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

    Leiterbahnen, die an einem Element hängen, lassen sich an diesem Ende nicht bewegen. Beim Bewegen von Elementen bewegen sich die angeschlossenen Leiterbahnen 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).

    Leitungen bewegen

    Bewegt man mit MOVE Leiterbahnen übereinander, dann werden diese Leiterbahnen nicht zu einem Signal verbunden (Kurzschluss, den der DRC-Befehl feststellt).

    Gruppe bewegen

    Will man eine Gruppe bewegen, definiert man zuerst die Gruppe mit dem GROUP-Befehl, dann selektiert man den MOVE-Befehl und klickt mit der rechten Maustaste die Gruppe an. Jetzt lässt sich die ganze Gruppe bewegen und mit der rechten Maustaste (um den Mauszeiger) rotieren.

    Polygone bewegen

    Wird eine Linie eines Polygons mit gedrückter Shift-Taste selektiert, kann das ganze Polygon bewegt werden.

    Hinweise für den Schaltplan

    Wird ein Supply-Pin (Pin-Direction Sup) auf ein Netz plaziert, erhält dieses Netz-Segment den Namen des Supply-Pins. Werden Pins oder Ports direkt aufeinander platziert (ohne explizite Netz-Linie), sind sie verbunden.

    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.

    Objekte an ihrem Aufhängepunkt selektieren

    Normalerweise bleibt ein selektiertes Objekt in dem Raster, in dem es ursprünglich plaziert wurde. Wird beim Selektieren eines Objektes Ctrl gedrückt, so wird der Punkt, an dem das Objekt selektiert wurde, an den Mauszeiger gezogen und schnappt in das aktuelle Raster.

    Wird eine Linie in der Mitte (nicht an einem ihrer Endpunkte) mit gedrückter Ctrl-Taste selektiert, so bleiben die Endpunkte fixiert und die Linie kann gebogen werden, wodurch sie zum Kreisbogen wird. Auf die gleiche Weise kann die Krümmung eines Kreisbogens (der im Grunde nichts anderes als eine Linie 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.

    Wird ein Port mit gedrückter Ctrl-Taste selektiert, so wird nur der Port bewegt. Das Verschieben des Ports wirkt sich selbstverständlich auf alle Instanzen dieses Moduls aus.

    Teile einer Seite auf eine andere Seite verschieben

    Sie können Teile einer Seite auf eine andere Seite des gleichen Schaltplans verschieben, ohne die Platine zu beeinflussen (falls Forward&Back Annotation aktiviert ist), indem Sie eine Gruppe definieren, die die zu verschiebenden Objekte enthält, diese mit dem MOVE-Befehl selektieren und dann auf die gewünscht Seite umschalten, wobei der MOVE-Befehl immer noch aktiv sein und die Gruppe am Mauszeiger hängen muss. In der neuen Seite ist dann der MOVE-Befehl wieder aktiv und hat die vorher definierte Gruppe am Mauszeiger. Platzieren Sie die Gruppe jetzt wie üblich, so werden alle betroffenen Objekte von der ursprünglichen Seite auf die aktuelle Seite verschoben. Falls die aktuelle Seite gleich der ursprünglichen ist, passiert nichts.

    Beachten Sie, das nur solche Linien verschoben werden, die beide Enden in der Gruppe haben, und dass Bauteile, die verschoben werden, alle ihre elektrischen Verbindungen mitnehmen, auch wenn eine an einem Pin angeschlossene Netzlinie nicht verschoben wird, da ihr anderes Ende nicht in der Gruppe liegt. Falls ein Pin auf der neuen Seite eine elektrische Verbindung hat, aber kein anderer Pin, Linie 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.

    Klicken & Ziehen

    Man kann Objekte bereits durch einfachen Linksklick auf eines der Objekte in der Gruppe bewegen, wenn Standard-Befehl GROUP aktiviert ist.

    NAME

    Funktion
    Anzeigen und Ändern von Namen.
    Syntax
    NAME •..
    NAME new_name •
    NAME old_name new_name
    Siehe auch
    LABEL, SHOW, REPOSITION, VALUE

    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. Andere Objekttypen (z.B. Netze, Busse, Signale) müssen vorher angeklickt werden.

    Bibliothek

    Im Bibliotheks-Editier-Modus gilt das gleiche für Pad-, Smd-, Pin- und Gate(Symbol)-Namen.

    Automatische Namensvergabe

    EAGLE vergibt automatisch Namen (N$.. für Netze; E$.. für Elemente; S$.. für Signale; P$.. für Pads, Pins und Smds; G$.. für Gates). Zumindest in Packages und Symbolen sollte man die Pad- und Pin-Bezeichnungen durch gängige Namen (z.B. 1..14 bei einem 14pol. DIL-Gehäuse) bzw. die Signalbezeichnung ersetzen. Die automatische Namensvergabe von Bauteilen kann mit PREFIX gesteuert werden.

    Namensregeln

    Buchstaben in EAGLE-Objektnamen werden automatisch in Grossschreibweise umgewandelt. Neben den normalen Buchstaben toleriert EAGLE die meisten anderen Sonderzeichen ausser dem Leerzeichen und dem Strichpunkt (';'). Bei Netze, Bauteilen, Modul-Instanzen, Signalen und Elementen wird auch der Doppelpunkt (':') nicht unterstützt, da er für die automatische und eindeutige Benennung von Objekten in hierarchischen Designs benötigt wird.
    Zum Beispiel kann sich ein Element AMP1:IC1 nur auf ein Bauteil IC1 in dem Modul beziehen, welches von der Modul-Instanz AMP1 benutzt wird, Konsistenz vorausgesetzt.

    Neben dem Haupt-Schaltplan hat jedes Modul seinen eigenen Namensraum. Daher ist es kein Problem, die Bauteile R1 bis R9 auf der Hauptebene und auch in einem oder mehreren Modulen zu haben. Siehe auch Befehl MODULE.

    Schaltplan

    Beim Umbenennen von Netzen und Bussen in Schaltplänen werden drei verschiedene Fälle unterschieden, da Netze und Busse aus mehreren (nicht explizit verbundenen) Segmenten bestehen und über mehrere Seiten verteilt sein können. Das in einem solchen Fall erscheinende Menü ermöglicht die Auswahl, ob

    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.

    Polygon

    Beim Umbenennen eines Signal-Polygons in einem Board kann ausgewählt werden, ob nur dieses Polygon umbenannt (und damit Bestandteil eines anderen Signals) werden soll, oder ob das gesamte Signal einen anderen Namen erhalten soll.

    NET

    Funktion
    Zeichnen von Netzen im Schaltplan.
    Syntax
    NET [net_name] • [curve | @radius] •..
    NET PINBREAKOUT [PIN | UNIQUE] [LENGTH=VALUE] • •..
    NET PINBREAKOUT [AUTOINCR] [LENGTH=VALUE] net_name • •..
    Maustasten
    Rechte ändert den Knickwinkel (siehe SET Wire_Bend).
    Shift+Rechte kehrt die Richtung des Weiterschaltens des Knickwinkels um.
    Ctrl+Rechte schaltet zwischen korrespondierenden Knickwinkeln hin und her.
    Siehe auch BUS, NAME, CLASS, SET

    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 LINE-Befehl).

    Bussignal auswählen

    Startet man das Netz auf einem Bus, öffnet sich ein Popup-Menü, aus dem man ein Signal des Busses auswählen kann. Das Netz erhält dann den entsprechenden Namen und gehört damit zu diesem Signal. Enthält der Bus mehrere Teilbusse, öffnet sich erst ein Popup-Menü, in dem man den gewünschten Teilbus auswählen kann.

    Netz-Namen

    Gibt man einen Namen im NET-Befehl an, dann erhält das Netz diesen Namen.

    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. Netznamen sollten auch '[' und ']' nicht enthalten, da diese zur Bereichsangabe bei Bussen verwendet werden. Netze eines solchen Busses führen den Index ohne eckige Klammern. (Z.B.: Aus dem Busnamen D[0..15] ergeben sich die Netze: D0, D1, ...)

    Net BREAKOUT

    Der NET-Befehl enthält Breakout-Optionen, mit denen man beliebige Bauteilpins (aus einer beliebigen Anzahl von Bauteilen) im Schaltplan wählen kann und automatisch neue Netze, die aus den Pins einschließlich des Labels im gewählten Format herausgeführt werden, anlegen lassen kann. Dieser Befehl kann über die Schaltfläche "Pin Breakout" in der Parameterleiste des NET-Befehls oder durch Eingabe von NET BREAKOUT in der Kommandozeile gestartet werden.

    Starten Sie den Befehl ohne Parameter (oder über die NET Parameter Schaltfläche) kann man in der Oberfläche die Art des Breakouts bestimmen. Klicken Sie dann auf beliebige Pins von beliebigen Bauteilen im Schaltplan, damit die entsprechenden Netze mit der gewählten Art der Beschriftung aus den Pins herausgeführt werden.

    Mit den Befehlszeilen-Optionen PIN, UNIQUE und net_name können Sie den Label-Typ bestimmen. Wenn ein Netzname angegeben wird (net_name), wird dieser verwendet, egal an welchen Pin das Netz angeschlossen ist.

    Die Schlüsselwörter PIN, UNIQUE und AUTOINCR haben eine spezielle Bedeutung und können nicht als Wert für net_name verwendet werden: PIN bedeutet, dass das neue Netz nach dem Pin-Namen benannt wird, mit dem es verbunden ist. Wählt man UNIQUE, zeigt das Label folgendes Format: part_gate_pin, wobei die Namen des Bauteils, das Gatters und des Pins für den eindeutigen Netznamen verkettet werden.

    Das optionale Schlüsselwort AUTOINCR steht vor einem benutzerdefinierten Netznamen und zeigt an, dass die Pin-Namen automatisch inkrementiert werden sollen, wenn der Benutzer weitere Pins hinzufügt und das letzte Zeichen von net_name eine Zahl ist. Wenn Sie zum Beispiel ADDR1 mit automatischem Inkrementieren verwenden, würden die nächsten Pins mit den Netzen ADDR2, ADDR3 usw. verbunden werden.

    Mit dem BREAKOUTBUS-Befehl kann man neue mit Labeln versehene Netze automatisch aus Bussen herausführen. Den Befehl startet man im Rechtsklick-Menü des Bus-Objekts oder über die Kommandozeile. Mehr dazu unter BREAKOUTBUS.

    Netze inklusive Labels können automatisch mit dem PINBREAKOUT-Befehl aus Bauteilen herausgeführt werden. Diesen kann man von der Kommandozeile aus oder im aus dem Rechtsklick-Menü der Bauteil-Instanz starten. Mehr dazu unter PINBREAKOUT.

    Linienbreite

    Die Breite der Linien, die ein Netz darstellen, lässt sich mit dem Befehl
    SET NET_WIRE_WIDTH width;
    
    voreinstellen (Default: 6 Mil).

    Negierte Signale

    Der Name eines negierten Signals ("active low") kann überstrichen dargestellt werden, wenn ihm ein Ausrufezeichen ('!') vorangestellt wird, wie in
      !RESET
    
    was als
      _____
      RESET
    
    dargestellt würde. Einzelheiten hierzu finden Sie in der Beschreibung des TEXT-Befehls.

    NEWGROUP

    Function
    Creates a persistent group from selected objects.
    Syntax
    NEWGROUP
    NEWGROUP [group_name] 0|1
    Mouse keys
    Ctrl/Cmd+G performs NEWGROUP command on selected objects.
    See also
    EDITGROUP, UNGROUP, SET, GROUPS VIEW

    The NEWGROUP command creates a named group of object(s) that is saved in the design as an object. The group may be empty and may have restrictions on selection and operations.
    The keyboard shortcut can be overridden in default-assign.scr. Make sure that line "SCRIPT default-assign.scr" in "Documents/EAGLE/scripts/eagle.scr" is uncommented to properly assign shortcut keys.

    Selectable Flag

    Selectable flag lets user select and operate on a persistent group. It may be changed through properties dialog of the group. See also INFO

    If the selectable flag is unchecked, the group is disabled from selection and cannot be operated on any commands that change the design, but such groups may have objects spanning across multiple sheets too. This enables user to create a collection of named objects regardless of their location in the design.

    If the selectable flag is checked, in schematic, the group has a boundary and a name label in the sheet and user may select the group by clicking on the boundary or name label. User may perform operations on such groups like they are performed on any other selectable objects in the design. But such groups cannot have objects spanning multiple sheets. They can only have objects that are in the same sheet.
    Groups can also be selected from the design manager when "Select in Design" is On. See DESIGN MANAGER. User may note that when a selectable group is selected, Selection Inspector shows group is selected, but when a non-selectable group row is 'selected' in the design manager, its member objects are selected in the design (in schematic, selection is truncated to current sheet).
    In schematics, the properties of group boundary and title annotations can be changed from the properties dialog box. User may also switch off annotations for individual group(s). See also INFO
    In schematics, the group title always sticks to the center of the top boundary and cannot be moved. The origin of a selectable group is the group title in schematics and center of the member objects in boards. In schematics, the group boundary is dynamic - it is updated when an object in the group is moved or deleted.

    Nested and Overlapping Groups

    User may create nested groups through the EDITGROUP command. A selectable group cannot have a non-selectable group as its sub-group at any time. Objects may belong to multiple groups.
    All selectable objects can be part of group except the following:
    Airwires
    Attributes

    Commands Supported with Non-Selectable Groups

    ATTRIBUTE adds attributes to group
    DELETE deletes the group and its member objects
    EDITGROUP adds/removes/moves group to other group(s)
    INFO opens properties dialog for group
    NAME change group name
    SHOW perform SHOW commands on objects in group
    UNGROUP removes the group

    Commands Supported with Selectable Groups

    All the commands supported with non-selectable groups are also supported with selectable groups. In addition to those, following commands are also supported with selectable groups:
    COPY copies group and its member objects
    LOCK locks the members of the group
    MIRROR mirrors the objects in group together
    MOVE moves the group and its member objects
    ROTATE rotates the group and its member objects

    OPEN

    Funktion
    Öffnen einer Bibliothek.
    Syntax
    OPEN library_name OPEN library_urn
    Siehe auch
    CLOSE, USE, EDIT, SCRIPT

    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.

    Wird ein Bibliotheksname angegeben und es exisitiert eine Bibliothek mit diesem Namen im Bibliothekspfad, wird diese geöffnet. Anderenfalls wird eine Bibliothek mit diesem Namen im ersten Verzeichnis, das als Bibliothekspfad angegeben ist, angelegt. Wird ein URN angegeben und es gibt eine Verwaltete Bibliothek mit diesem URN, die lokal verfügbar (downloaded) ist und auch dem Anwender gehört, wird diese geöffnet.

    Dieser Befehl ist in erster Linie für Script-Dateien erforderlich.

    Um zum Library Editor zu wechseln, kann man den Befehl

    OPEN .lbr
    
    verwenden.

    OPTIMIZE

    Funktion
    Zusammenfassen von Linien-Segmenten.
    Syntax
    OPTIMIZE;
    OPTIMIZE name ..
    OPTIMIZE •..
    Maustasten
    Ctrl+Rechte optimiert die Gruppe.
    Siehe auch
    SET, SPLIT, MOVE, ROUTE

    Der OPTIMIZE-Befehl fasst Linien-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.

    Wird ein Signal- bzw. Netz- oder Bus-Name angegeben (oder wird so ein Objekt selektiert), so wirkt der Befehl nur auf dieses Objekt.

    Wird eine Gruppe selektiert, so werden darin nur echte Signal- bzw. Netz- und Bus-Linien optimiert. Um alle Linien in einer Zeichnung zu optimieren, geben Sie ein

    OPTIMZE;
    

    Automatische Optimierung

    Diese Linien-Optimierung geschieht auch automatisch nach dem MOVE-, SPLIT und ROUTE-Befehl für die damit selektierte Linie, es sei denn, sie wurde mit dem Befehl
    SET OPTIMIZING OFF;
    
    abgeschaltet, oder beim SPLIT-Befehl wurden zwei Mausklicks auf denselben Punkt einer Linie 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.

    PACKAGE

    Funktion
    Zuweisung einer Package-Variante für ein Device.
    Syntax
    PACKAGE
    PACKAGE pname vname
    PACKAGE pname@lname vname
    PACKAGE name
    PACKAGE -old_name new_name
    PACKAGE -name
    Siehe auch
    CONNECT, TECHNOLOGY, PREFIX

    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.
    Kompatibilitätsmodus zu Version 3.5:
    Wird für name ein in der Bibliothek existierender Package-Name verwendet und ist bisher noch keine Package-Variante definiert, wird eine neue Package-Variante mit Namen '' (ein "leerer" Name) erzeugt.

    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.

    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.

    Devices ohne Packages

    Man kann auch Devices ohne Zuordnung eines Package erzeugen, beispielweise für Zeichnungsrahmen, Supply-Devices, externe oder andere Devices, die nur im Schaltplan Sinn machen. Man erreicht dies, indem man das Device-Set mit den entsprechenden Symbolen, ggf. Technologien und Attributen anlegt, jedoch das Package-Kommando nicht verwendet. Speichert man dies so, entsteht eine packagelose Variante (mit Leerstring als Variantennamen). Sobald ein Package zugewiesen wird, wird die packagelose Variante damit überschrieben und es können keine weiteren packagelose Varianten erzeugt werden.
    Sobald die Gates Pins enthalten sind packagelose Devices nur begrenzt sinnvoll (s.u.).

    Supply-Devices

    Um Supply-Symbole im Schaltplan zu verwenden, nutzt man packagelose Supply-Devices. Das Device besteht in der Regel aus genau einem Symbol mit einem Sup-Pin (siehe PIN-Befehl).

    Externe Devices

    Diese dienen dazu, um im Schaltplan Anordnungen zu dokumentieren, die im Board nicht relevant sind, da es sich um extern zugeschaltete Anordnungen handelt, z.B. für Simulations- oder Testzwecke.
    Solche Devices müssen mit dem Attribut _EXTERNAL_ ausgestattet sein (siehe ATTRIBUTE-Befehl). Der Wert spielt keine Rolle. In diesem Fall können beliebige Gatter mit Pins definiert sein, ohne dass ein Package existiert. Das Attribut muss in der Library vergeben worden sein und nicht erst im Schaltplan oder Board.

    Man beachte, dass Supply- und externe Devices nicht mehr als solche gehandhabt werden, sobald dazu Packages definiert werden. Die Pins müssen dann entsprechend angeschlossen sein.

    PAD

    Funktion
    Plazieren von Pads in Packages.
    Syntax
    PAD [diameter] [shape] [orientation] [flags] ['name'] •..
    Maustasten
    Rechte dreht das Pad.
    Shift+Rechte kehrt die Richtung der Drehung um.
    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 200 mm (ca. 7.7840 Zoll) 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.

    Beispiel

    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.

    Pad-Formen

    Ein Pad kann eine der folgenden Formen (shape) haben:

    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.

    Beliebige Pad-Formen

    Falls die standardmäßigen Pad-Formen für ein bestimmtes Bauteil nicht ausreichen, können Sie beliebige Pad-Formen dadurch erzeugen, dass Sie ein Polygon um ein Pad herum zeichnen, oder eine Leiterbahn zeichnen, die mit einem Ende an das Pad angeschlossen ist.

    Hierbei gelten folgende Bedingungen:

    • Ein Polygon in einem Signal-Layer (1-16) gilt als mit einem Pad verbunden, wenn der Aufhängepunkt des Pads innerhalb der durch die Mittellinien der Polygon-Linien definierten Fläche liegt.
    • Eine Linie in einem Signal-Layer gilt als mit einem Pad verbunden, wenn einer ihrer Endpunkte am Aufhängepunkt des Pads liegt. Etwaige mit dem anderen Ende einer solchen Linie verbundene weitere Linien sind ebenfalls elektrisch mit dem Pad verbunden.
    • Pro Pad wird nur ein Polygon berücksichtigt. Ist mehr als ein Polygon an einem Pad angeschlossen, so erzeugen diese DRC-Fehler.
    • Mit einem Pad verbundene Polygone werden von Autorouter ignoriert, wenn er das betreffende Signal routet. Für andere Signale gelten sie als Hindernisse.
    • Mit einem Pad verbundene Linien werden wie alle anderen Leiterbahnen behandelt, mit dem Unterschied, dass sie nicht gesplittet werden können.
    • Lötstop-Masken werden nur für das Pad selber erzeugt. Werden darüber hinaus weitere Lötstop--Masken benötigt, so müssen diese explizit in die entsprechenden Layer gezeichnet werden.
    • Bei der Generierung von Thermal-Stegen wird die zusätzliche Polygon-Form mit berücksichtigt.
    • Ist ein Polygon oder eine Linie mit mehr als einem Pad innerhalb eines Bauteils verbunden, so gilt nur eines der Pads als elektrisch mit dem Polygon bzw. der Linie verbunden. Die anderen Pads erzeugen DRC-Fehler, es sei denn, sie sind alle innerhalb eines Devices am selben Pin angeschlossen.
    • Enthält ein Polygon mehrere Pads, so erzeugt nur eines davon (das erste in der Datenstruktur gefundene) Thermal-Stege. Sollen alle solchen Pads Thermal-Stege erzeugen, so müssen Sie meherere Polygone zeichnen (eines pro Pad), die entsprechend überlappen.
    • Sind mehrere Pads mit einem Pin verbunden, und haben diese Pads überlappende Leiterbahnen oder Polygone im Package, so wird es zu DRC-Fehlern kommen, falls der Pin nicht an einem Netz angeschlossen ist (d.h. die Pads nicht an einem Signal angeschlossen sind).

    Pad-Namen

    Pad-Namen werden vom Programm automatisch erzeugt und können mit dem NAME-Befehl geändert werden. Der Name kann als Parameter auch im PAD-Befehl mit angegeben werden (muss in Hochkommas eingeschlossen sein).

    Die Namen der Pads kann man mit dem Befehl

    SET PAD_NAMES ON/OFF
    
    ein- bzw. ausblenden.

    Flags

    Folgende flags können dazu benutzt werden, das Erscheinungsbild eines Pads zu beeinflussen:

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

    Einzelne Pads

    Einzelne Pads in Platinen müssen als Package definiert und in die Platine geladen werden. Durchkontaktierungen lassen sich aber mit dem VIA-Befehl direkt in Platinen plazieren. Solche Durchkontaktierungen haben aber keinen Elementnamen und können deshalb auch nicht in der Netzliste geführt werden.

    PAINTROLLER

    Funktion
    Überträgt ausgewählte Eigenschaften eines selektierten Objekts auf andere Objekte desselben Typs.
    Syntax
    PAINTROLLER •
    PAINTROLLER • •
    PAINTROLLER • [propertyname] •
    Der Befehl PAINTROLLER kann über die Kommandozeile oder über das Icon im Befehlsmenü gestartet werden.

    Im Dialog 'Copy Properties' des gewählten Objekts selektiert man die Eigenschaften, die auf andere Objekte desselben Typs übertragen werden sollen. Nach Klick auf OK, klickt man auf die Objekte, denen man diese Eigenschaften geben will.

    PADARRAY

    Funktion
    Erzeugt Pad-Arrays.
    Syntax
    PADARRAY [sides base start count dx dy unit drawrect includename includevalue deleteobjs]
    Siehe auch PAD

    Der Befehl PADARRAY erlaubt es ein Array von Pads im Footprint-Editor der Bibliothek anzulegen. Wird der Befehl über das Icon in der Parameter-Toolbar des PAD-Befehls gestartet, öffnet sich ein Dialog, in dem man die Optionen für die Seite, den Basisnamen, Start-Index, Anzahl der Pads usw. vor dem Anlegen des Arrays festlegt. Wird der Befehl über die Kommandozeile gestartet und dabei Argumente angegeben, sind folgende Optionen verfügbar.

    Optionen

    In der Kommandozeile müssen alle Optionen angegeben werden:
    SIDES Kann L, R, LR, T, B, oder TB sein. Zeigt an, auf welcher Seite des Rechtecks die Pads gezeichnet werden sollen. Wobei L=links, R=rechts, T=Top (oben), B=Bottom (unten) ist.
    BASE Das ist der Basisname, der für das Benennen der Pads verwendet wird. Das erste Pad wird dementsprechend <base><start> und die nachfolgenden Pads mit einem aufsteigenden numerischen Index benannt (z.B. ADDR1, ADDR2 ... ADDRn). Das letzte platzierte Pad erhält den entsprechenden Namen <base><start+count-1>.
    START Das ist der Start-Index für die Benennung der Pads. Der Name des ersten Pads ist <base><start>.
    COUNT Die Anzahl der Pads, die platziert werden sollen.
    DX Der Abstand zwischen den Pads in x-Richtung.
    DY Der Abstand zwischen den Pads in y-Richtung.
    UNIT Gültige Werte sind: MIC (für Micron), MM (Millimeter), MIL (mil = 0.001 inch), INCH.
    DRAWRECT ON oder OFF. Bestimmt, ob beim Platzieren auch ein Rechteck im Layer tPlace gezeichnet werden soll.
    INCLUDENAME ON oder OFF. Bestimmt, ob ein Textobjekt >NAME platziert werden soll.
    INCLUDEVALUE ON oder OFF. Bestimmt, ob ein Textobjekt >VALUE platziert werden soll.
    DELETEOBJS ON oder OFF. Bestimmt, ob vor dem Anlegen des Arrays Pads, Labels und Wire-Objekte gelöscht werden sollen.

    PASTE

    Funktion
    Inhalt der Zwischenablage oder einer Zeichnungsdatei einfügen.
    Syntax
    PASTE [ orientation ] •
    PASTE [ orientation ] [ offset ] filename •
    Maustasten
    Mittlere spiegelt den Inhalt der Zwischenablage.
    Rechte dreht den Inhalt der Zwischenablage.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Ctrl+V kopiert den Inhalt der Zwischenablage.
    Siehe auch
    CUT, COPY, GROUP

    Zu 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:

    • Von und nach Devices ist kein CUT/PASTE möglich.
    • Elemente und Signale können nur von Platine zu Platine kopiert werden.
    • Parts, Busse und Netze können nur von Schaltplan zu Schaltplan kopiert werden.
    • Pads und Smds können nur von Package zu Package kopiert werden.
    • Pins können nur von Symbol zu Symbol kopiert werden.
    • Parts, Elemente, Signale, Pads, Smds und Pins erhalten einen neuen Namen, falls ihr bisheriger Name in der neuen Zeichnung (bzw. im Symbol oder Package) schon existiert.
    • Busse behalten ihren Namen.
    • Netze behalten ihren Namen, falls es ein Label oder ein Supply-Symbol an einem der Netz-Segmente gibt. Andernfalls wird ein neuer Name generiert, sofern der bisherige Name schon vorhanden ist.
    Befinden sich in der mit PASTE einzufügenden Zeichnung modifizierte Devices oder Packages, die in einer älteren Version schon im Schaltplan oder im Layout verwendet wurden, wird automatisch ein Library-Update gestartet, um die Bauteile durch die neueren aus der Zwischenablage zu ersetzen.
    Achtung: Nach einem Library-Update sollten Sie immer einen Design Rule Check (DRC) und einen Electrical Rule Check (ERC) durchführen!

    Eine komplette Datei einfügen

    Wird ein Dateiname in der Befehlszeile angegeben, so wird der gesamte Inhalt dieser Datei in die geladene Zeichnung eingefügt. Ist die angegebene Datei Teil eines konsistenten Board/Schaltplan-Paares und es wird gerade ein konsistentes Board/Schaltplan-Paar editiert, so werden beide Dateien in die jeweilige Zeichnung des gerade bearbeiteten Paares eingefügt. Setzen Sie * anstelle des Dateinamens oder geben nur ein Verzeichnis an, öffnet sich ein File-Dialog im Projektverzeichnis bzw. angegebenen Verzeichnis.

    Angenommen, Sie haben ein konsistentes Board/Schaltplan-Paar, welches das Design eines Verstärkers enthält (wobei der Schaltplan auch aus mehreren Seiten bestehen kann). Wenn Sie jetzt diesen Verstärker mehrmals in Ihr Projekt einfügen wollen, können Sie dies einfach folgendermaßen erreichen:

    PASTE 100 amplifier.sch •
    PASTE 200 amplifier.sch •
    
    Dieses Beispiel demonstriert auch die Verwendung eines offset, wodurch der angegebene Wert zu allen Bauteil- und Netznamen hinzuaddiert wird (es sei denn, sie behalten ihren ursprünglichen Namen, siehe unten). Somit werden im ersten Verstärkerkanal alle Bauteile und Netze beginnend bei 100 numeriert, während sie im zweiten Kanal bei 200 beginnen. Wird kein Offset angegeben, so werden Namen nach Bedarf generiert.

    Wie bei einer normalen PASTE-Operation auch, behalten Netze beim Einfügen einer kompletten Datei ihren Namen, wenn sie mit einem Label versehen oder an einem Supply-Pin angeschlossen sind. Dabei reicht es, wenn das Netz auf einer Schaltplanseite ein Label hat bzw. an einen Supply-Pin angeschlossen ist, auch wenn das Netz auf mehreren Seiten vorkommt.

    Wird die PASTE-Operation nicht in einer Script-Datei ausgeführt, so wird Ihnen ein Dialog mit allen Netznamen angeboten. Durch Klicken auf die Namen in der Spalte "Neuer Name" können Sie einzelne Netznamen editieren. Icons zeigen an, ob ein Netz ein Label oder einen Supply-Pin hat, und ob es mit einem bestehenden Netz gleichen Namens in der geladenen Zeichnung verbunden wird.

    Wird ein Schaltplan in eine Schaltplan-Zeichnung eingefügt, so werden alle Seiten des eingefügten Schaltplans als separate, neue Seiten zu der editierten Zeichnung hinzugefügt. Das zugehörige Board (falls vorhanden) wird unterhalb des Inhalts des editierten Boards platziert. Falls Sie genau kontrollieren wollen, wohin das Board platziert wird, können Sie die PASTE-Operation auch im Board-Editor ausführen. Hierbei werden die Schaltplanseiten genauso hinzugefügt, aber das Board wird an den Mauszeiger gehängt und kann wie gewünscht platziert werden.

    Bezüglich globaler Einstellungen in den Dateien wie Layer, Netzklassen, Designregeln und Autorouter-Parameter gilt: Die Einstellungen der aktuell geöffneten Zeichnung behalten ihre Gültigkeit. Das heißt zum Beispiel, dass bei den eingefügten Daten die Restring-Parameter der aktuellen Zeichnung verwendet werden, so dass sich Pads oder Vias von der Quelldatei unterscheiden können. Auch hierbei ist ein DRC sehr zu empfehlen.
    Zusätzliche Einstellungen wie zusätzliche Layer oder Netzklassen werden natürlich hinzugefügt.

    Das Einfügen einer kompletten Datei kann auch mit Drag&Drop geschehen, wenn dabei die Ctrl-Taste gedrückt wird.

    Falls der Dateiname mit einer Orientierung oder einem Offset verwechselt werden könnte, schließen Sie ihn in Hochkommas ein.

    PATTERN

    Funktion
    Vervielfältigt und platziert ein gewähltes Objekt in einer linearen oder zirkularen Anordnung.
    Syntax
    PATTERN •..
    PATTERN LINEAR item-count x-spacing x-unit y-spacing y-unit object-location first-item-location
    PATTERN CIRCULAR item-count degree [ rotate ] object-location circle-center-location first-item-location
    Maustasten
    Rechte rotiert das ausgewählte Objekt.
    Shift+Rechte kehrt die Drehrichtung um.
    Der Befehl PATTERN kann über die Kommandozeile oder über das PATTERN-Icon im Befehlsmenü gestartet werden.

    Es öffnet sich ein Dialog indem man die Anzahl der Kopien des Objekts und den Offset in X- und Y-Richtung bei linearer Anordnung festlegen kann. Nach einem Klick auf OK, wählt man das Objekt, das vervielfältigt angeordnet werden soll. Mit einem weiteren Klick in die Zeichenfläche legt man die Position der ersten Kopie fest. Die weiteren Objekte werden entsprechend angeordnet.
    Wählt man im Dialog den Modus "Circular", die Anzahl der Kopien und die Winkelschritte, selektiert man mit dem ersten Mausklick in die Zeichenfläche das Objekt, das mit PATTERN vervielfältigt und angeordnet werden soll, mit dem zweiten Mausklick den Mittelpunkt des Kreises und mit dem dritten Mausklick die Position des ersten zu platzierenden Objekts.

    Der PATTERN-Befehl kann im Schaltplan-, Layout- und Bibliotheks-Editor angewendet werden.

    Optionen

    Lineare Anordnung

    ITEM-COUNT Anzahl der Kopien in der Anordnung.
    X-SPACING Abstand zwischen zwei Kopien in X-Richtung.
    X-UNIT INCH oder MIL oder MM oder MIC. Einheit von X-SPACING.
    Y-SPACING Abstand zwischen zwei Kopien in Y-Richtung.
    Y-UNIT INCH oder MIL oder MM oder MIC. Einheit von Y-SPACING.
    OBJECT-LOCATION Position des zu kopierenden Objekts.
    CIRCLE-CENTER-LOCATION Position des Mittelpunkts bei einer zirkularen Anordnung.
    FIRST-ITEM-LOCATION Position der ersten Kopie in der Anordnung.

    Zirkulare Anordnung

    ITEM-COUNT Anzahl der Kopien in der Anordnung. DEGREE Wert des Winkels in Grad zwischen zwei Kopien in der Anordnung. ROTATE Optional. Wird diese Option angegeben, werden die Objekte jeweils um den angegebenen Winkel gedreht. OBJECT-LOCATION Position des zu kopierenden Objekts. FIRST-ITEM-LOCATION Position der ersten Kopie in der Anordnung.

    Beispiele

    PATTERN CIRCULAR 20 45.0 ROTATE (1.5 1.6) (2.0 2.0) (3.0 2.0)
    
    Damit erzeugt man eine zirkulare Anordnung mit 20 Kopien des Objekts an der Position (1.5 1.6). Der Mittelpunkt der Anordnung ist bei (2.0 2.0), das erste kopierte Objekt wird an Position (3.0 2.0) platziert, der Winkel zwischen zwei Objekten ist 45.0° ; jedes Objekt wird gedreht.
    PATTERN LINEAR 5 1.5 INCH 200 MIL (1.5 1.5) (3.0 2.5)
    
    Erzeugt eine lineare Anordnung mit 5 Kopien des Objekts auf (1.5 1.5). Die Anordnung beginnt bei (3.0 2.5) mit ein Abstand in X von 1.5 inch und in Y von 200 mil.

    PIN

    Funktion
    Anschlusspunkte in Symbolen definieren.
    Syntax
    PIN 'name' options •..
    Maustasten
    Rechte dreht den Pin.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Siehe auch
    NAME, SHOW, CHANGE, PINARRAY

    Options

    Die options teilen sich in folgende Gruppen auf:

    Direction
    Function
    Length
    Orientation
    Visible
    Swaplevel

    Direction

    Die logische Richtung des Signalflusses. Sie ist für den Electrical Rule Check (siehe ERC-Befehl) und für die automatische Verdrahtung der Stromversorgungs-Pins von Bedeutung. Möglich sind:

    NC not connected
    In Eingang
    Out Ausgang (totem-pole)
    IO 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: IO

    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.

    Function

    Die grafische Darstellung des Pins. Möglich sind:

    None keine spezielle Funktion
    Dot Invertier-Symbol
    Clk Taktsymbol
    DotClk Invertiertes Taktsymbol

    Default: None

    Length

    Die Länge des Pin-Symbols. Möglich sind:

    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

    Orientation

    Die Lage des Pins. Beim Plazieren lassen sich Pins mit der rechten Maustaste rotieren. Der Parameter "orientation" ist für die textuelle Eingabe des Pin-Befehls erforderlich, z. B. in Script-Dateien.

    R0 Pin-Symbol rechts
    R90 Pin-Symbol oben
    R180 Pin-Symbol links
    R270 Pin-Symbol unten

    Default: R0

    Visible

    Dieser Parameter bestimmt, ob der Pin- und/oder Pad-Name im Schaltplan sichtbar sein soll.

    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

    Swaplevel

    Eine ganze Zahl. Die Zahl 0 bedeutet, dass der Pin nicht gegen einen anderen desselben Gates ausgetauscht werden darf. Jede Zahl, die größer als 0 ist, bedeutet, dass der Pin mit solchen Pins ausgetauscht werden kann, die den gleichen Swaplevel haben und im selben Symbol definiert sind. Beispiel: Die Eingangs-Pins eines NAND-Gatters können beide denselben Swaplevel bekommen, da sie äquivalent sind.

    Default: 0

    Anwendung des PIN-Befehls

    Der PIN-Befehl dient dazu, in einem Symbol die Anschlusspunkte für Netze (Pins) zu definieren. Pins werden im Symbols-Layer dargestellt. Zusätzliche Informationen erscheinen im Pins-Layer. Mit den options lassen sich jedem Pin individuelle Eigenschaften mitgeben. Die options dürfen in jeder beliebigen Reihenfolge eingegeben werden, man kann sie aber auch ganz weglassen.

    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.

    Namen "hochzählen"

    Will man beispielsweise Pins mit den Namen D0 bis D7 in einem Symbol plazieren, dann setzt man den ersten Pin mit dem Befehl
    PIN 'D0' •
    
    und alle weiteren nur noch mit je einem Mausklick ab. Der numerische Teil des Namens wird dann automatisch weitergezählt.

    Options mit CHANGE einstellen

    Alle options lassen sich auch mit dem CHANGE-Befehl voreinstellen. Sie bleiben so lange erhalten, bis sie entweder mit dem PIN- oder dem CHANGE-Befehl wieder geändert werden.

    Der SHOW-Befehl zeigt den Namen des Pins sowie Direction und Swaplevel an.

    Pin rotieren

    Bewegt man einen Pin mit dem MOVE-Befehl, dann rotiert die rechte Maustaste den Pin.

    Gleiche Pin-Namen

    Wenn Sie Bausteine definieren wollen, die mehrere Pins mit gleichem Namen haben, dann gehen Sie folgendermaßen vor:

    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.

    Pin-Beschriftung

    Die Position der Pin- und Pad-Namen in einem Schaltplansymbol ist relativ zum Pin-Aufhängepunkt festgelegt und kann nicht verändert werden. Ebenso ist die Schrifthöhe für Pin- und Pad-Namen fest eingestellt (60 Mil). Bitte orientieren Sie sich beim Definieren neuer Symbole an den Größenverhältnissen der in den mitgelieferten Bibliotheken vorhandenen Bausteine.

    Negierte Pins

    Der Name eines negierten Pins ("active low") kann überstrichen dargestellt werden, wenn ihm ein Ausrufezeichen ('!') vorangestellt wird, wie in
      !RESET
    
    was als
      _____
      RESET
    
    dargestellt würde. Einzelheiten hierzu finden Sie in der Beschreibung des TEXT-Befehls.

    PINARRAY

    Function
    Erzeugt Pin-Arrays.
    Syntax
    PINARRAY [sides base start numpins drawrect includename includevalue deleteobjs]
    See also PIN

    Der Befehl PINARRY erlaubt es ein Pin-Array im Symbol-Editor anzulegen. Wird der Befehl über das Icon in der Parameterleiste des PIN-Befehls gestartet, öffnet sich ein Dialog in dem unter anderem die Optionen Sides, Basename, Start Index, und Anzahl der Pins vor dem Anlegen des Arrays festgelegt werden können. Wird der Befehl von der Kommandozeile aus gestartet, können die nachfolgend gelisteten Optionen angegeben werden.

    Optionen

    Es müssen alle Optionen angegeben werden:
    SIDES Kann L|R|T|B, oder irgendeine Kombination von diesen. Zeigt an, auf welcher Seite des Rechtecks die Pins gezeichnet werden sollen. Wobei L=links, R=rechts, T=Top (oben), B=Bottom (unten) ist.
    BASE Das ist der Basisname, der für das Benennen der Pins verwendet wird. Der erste Pin wird dementsprechend <base><start> und die nachfolgenden Pins mit einem steigenden numerischen Index benannt (z.B. ADDR1, ADDR2 ... ADDRn). Der letzte platzierte Pin erhält den entsprechenden Namen <base><start+numpins-1>.
    START Das ist der Start-Index für die Benennung der Pins. Der Name des ersten Pins ist <base><start>.
    NUMPINS Die Anzahl der Pins, die platziert werden sollen.
    DRAWRECT ON oder OFF. Bestimmt, ob beim Platzieren auch ein Rechteck im Layer Symbols gezeichnet werden soll.
    INCLUDENAME ON oder OFF. Bestimmt, ob ein Textobjekt >NAME platziert werden soll.
    INCLUDEVALUE ON oder OFF. Bestimmt, ob ein Textobjekt >VALUE platziert werden soll.
    DELETEOBJS ON oder OFF. Bestimmt, ob vor dem Anlegen des Arrays Pins, Labels und Wire-Objekte gelöscht werden sollen.

    PINBREAKOUT

    Funktion
    Erzeugt Netze mit oder ohne Labels, die aus allen Pins des gewählten Bauteils herausgezogen werden.
    Syntax
    PINBREAKOUT name type

    Der PINBREAKOUT-Befehl zieht für jedes selektierte Bauteil aus allen Pins für ein kurzes Stück Netze, die optional mit Namen und Labels versehen sein können.

    Der name-Parameter muss einem Bauteilnamen im Schaltplan entsprechen. type ist eine Zahl von 1 bis 4, entsprechend der folgenden Liste:

    • Unique (<part>_<gate>_<pin>)
    • Pin names (<pin>)
    • Default (N$1)
    • None

    Hinweis: Dieser Befehl mit seinen verschiedenen Optionen ist über das Kontextmenü mit rechtem Mausklick auf ein Bauteil im Schaltplan erreichbar.

    PINTOBUS

    Funktion
    Pins eines Bauteils werden automatisch über mit Labeln versehenen Netzen mit einem in der Nähe liegenden Bus, der die Pin-Namen führt, verbunden.
    Syntax
    PINTOBUS name

    Der PINTOBUS-Befehl wird verwendet um automatisch Netze aus allen Pins eines Bauteils herauszuziehen und diese mit einem nahegelegenen Bus zu verbinden, der die entsprechenden Pin-Namen des Bauteils in seiner Spezifikation enthält.

    Der Befehl kann aus der Kommandozeile oder über das Kontextmenü eines Bauteils im Schaltplan gestartet werden.

    Hinweis: Damit die Verbindung mit dem Bus klappt, muss dieser entweder vertikal oder horizontal gezeichnet sein.

    Hat ein Bauteil beispielsweise auf einer Seite Pins mit den Namen GND und VCC und auf der anderen Seite VIN und VOUT und verlegt man auf der einen Seite in der Nähe des Symbols einen Bus, der auch die Namen GND und VCC enthält und auf der anderen Seite entsprechend einen Bus mit VIN und VOUT, verbindet dieser Befehl die Busse mit den entsprechenden Pins automatisch.

    Hinweis: Man muss zuerst das Bauteil und die Busse, die man verbinden will, auswählen und dann den Befehl starten. Andernfalls gibt EAGLE eine entsprechende Meldung aus. Die empfohlene Methode ist zuerst schrittweise die Busse und das Objekt, das verbunden werden soll mit Ctrl + Klick zu selektieren und dann den Befehl PINTOBUS über die Kommandozeile oder über das Kontextmenü zu starten.

    PINSWAP

    Funktion
    Äquivalente Pins/Pads vertauschen.
    Syntax
    PINSWAP • •..
    Siehe auch
    PIN

    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

    Funktion
    Zeichnen von Polygonflächen.
    Syntax
    POLYGON [signal_name] [width] • [curve | @radius] • •..
    Maustasten
    Mittlere wählt den Layer.
    Rechte ändert den Knickwinkel (siehe
    SET Wire_Bend). Shift+Rechte kehrt die Richtung des Weiterschaltens des Knickwinkels um.
    Ctrl+Rechte schaltet zwischen korrespondierenden Knickwinkeln hin und her.
    Ctrl+Linke beim Absetzen eines Linien-Endpunktes definiert den Kreisbogen-Radius.
    Linke zweimal an der gleichen Stelle schließt das Polygon.
    Siehe auch CHANGE, DELETE, RATSNEST, RIPUP, LINE, 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 LINE-Befehl).

    Anmerkung

    Sie sollten es vermeiden, sehr kleine Werte für die width eines Polygons zu verwenden, da dies zu extrem großen Datenmengen führen kann, wenn die Zeichnung mit dem CAM Prozessor ausgegeben wird.
    Die Polygon-width sollte immer größer sein als die physikalische Auflösung des Ausgabegeräts. Zum Beispiel sollte bei einem Gerber Fotoplotter mit einer typischen Auflösung von 1 Mil die Polygon width nicht kleiner als zum Beispiel 6 Mil gewählt werden. Im allgemeinen sollte die Polygon width in der selben Größenordnung liegen wie die der übrigen Leiterbahnen.

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

    Um ein Missgeschick auszubessern, kann immer die letzte Linie des Polygons mit der ESCape-Taste entfernt werden.

    Urzustand und freigerechneter Zustand

    Für Polygone, die Bestandteil eines Signals sind, gibt es zwei verschiedene Zustände:

    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 Kontur-Linien dargestellt, um sie von anderen Linien 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.

    Andere Befehle und Polygone

    Polygone werden an den Kanten selektiert (wie normale Linien)

    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 Linienzügen).

    COPY: kopiert ganzes Polygon.

    NAME: Falls das Polygon in einem Signal-Layer liegt, wird der Name des Signals geändert.

    Polygon-Parameter

    Width

    Linienbreite der Polygonkanten. Wird auch zum Ausfüllen verwendet.

    Layer

    Polygone können in jeden Layer gezeichnet werden. Polygone in Signal-Layern sind Bestandteil eines Signals und werden 'freigestellt', d.h. potentialfremde Anteile werden 'abgezogen'. Polygone in Signallayern gehören zu einem Signal und halten Mindestabstände zu anderen Signalen, die in den Design Rules oder über die Netzklasse definiert wurden, ein. Von Polygonen im Top-Layer werden auch Objekte im Layer tRestrict abgezogen (entsprechendes gilt für Bottom und bRestrict). Damit ist es z. B. möglich, eine negative Beschriftung innerhalb einer Massefläche zu erzeugen.

    Pour

    Füllmodus (Solid = ganz gefüllt [Default], Hatch = schraffiert oder Cutout = Ausschnitt).

    Rank

    Legt fest wie Polygone voneinander subtrahiert werden. Polygone mit einem niedrigeren 'Rank' "erscheinen zuerst" (haben eine höhere Priorität) und werden somit von Polygonen mit einem höheren 'Rank' abgezogen.
    Gültige Werte sind 1..6. Polygone mit gleichem Rank werden vom Design Rule Check gegeneinander geprüft. Der Parameter 'Rank' ist nur für Polygone in Signallayern (1..16) relevant, die im Board gezeichnet wurden, und wird für alle anderen Polygone ignoriert. Der Standardwert ist 1.

    Thermals

    Bestimmt wie potentialgleiche Pads und Smds angeschlossen werden (On = es werden Thermals generiert [default], Off = keine Thermals).

    Spacing

    Abstand der Füll-Linien bei Pour=Hatch (Default: 50 Mil).

    Isolate

    Abstand der freigestellten Polygonkanten zu potentialfremdem Kupfer bzw. Objekten im Dimension-Layer oder entsprechendem Restrikt-Layer (default: 0). Dieser Wert ist nur dann maßgeblich, wenn er größer ist als der jeweilige Wert in den Design Rules bzw. Netzklassen. Siehe auch Design Rules unter Distance bzw. Supply. Bitte beachten Sie, dass, wenn Sie einem Polygon einen Isolationsabstand geben, der größer ist als der aus den Design Rules bzw. Netzklassen, kleine Lücken entstehen können zwischen dem freigerechneten Polygon und Objekten, die zum gleichen Signal gehören wie das Polygon selber, was zu Problemen bei der Fertigung führen kann! Es wird daher empfohlen, diesen Parameter auf dem Wert 0 zu belassen, es sei denn, Sie wissen genau, was Sie tun!

    Orphans

    Beim Freistellen von Polygonen kann es passieren, dass das ursprüngliche Polygon in mehrere Teile zerfällt. Falls sich in einem solchen Teil kein Aufhängepunkt eines Objektes des zugehörigen Signals befindet, entsteht eine 'Insel' ohne elektrische Verbindung zum zugehörigen Signal. Sollen solche Inseln (oder 'verwaiste' Flächen) erhalten bleiben, ist der Parameter Orphans auf On zu setzen. Bei Orphans = Off [default] werden sie eliminiert. Besteht ein Signal nur aus Polygonen und hat keine anderen, elektrisch angeschlossenen Objekte, so werden alle Teile unabhängig von der Einstellung des Parameters Orphans dargestellt.

    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.

    Stegbreite bei Thermals

    Die Breite der Stege bei Thermals ist:
    • bei Pads gleich dem halben Bohrdurchmesser des Pads,
    • bei Smds gleich der Hälfte der kleineren Kante,
    • mindestens gleich der Linienbreite (Width) des Polygons,
    • maximal zweimal die Linienbreite (Width) des Polygons.

    Konturdaten

    Der Signalname _OUTLINES_ gibt dem Polygon besondere Eigenschaften, die man zur Erzeugung von Konturdaten (z. B. zum Fräsen von Prototypen) benötigt. Dieser Name sollte ansonsten nicht verwendet werden.

    Schraffierte Polygone und Luftlinien

    Abhängig vom Wert des spacing-Parameters können Pads, Smds, Vias und Leiterbahnen innerhalb eines schraffierten Polygons, die zum selben Signal gehören wie das Polygon, durch das Raster fallen, und erhalten daher Luftlinien um Ihre Verbindung zu dem Signal anzuzeigen.

    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 eine Leiterbahn wären es ihre 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.

    Polygon-Ausschnitte

    Der spezielle Füllmodus "Cutout" bewirkt, dass ein Polygon von allen anderen Signal-Polygonen im gleichen Layer subtrahiert wird, unabhängig von deren Rank.

    Nur Polygone in Signal-Layern können den Füllmodus "Cutout" haben.

    Die Umrisse eines Ausschnitt-Polygons werden auf dem Bildschirm immer als gepunktete Linien dargestellt, auch nachdem die Signal-Polygone mit dem RATSNEST-Befehl freigerechnet wurden.

    Die Linienbreite eines Ausschnitts-Polygons wird beim Sutrahieren von den anderen Signal-Polygonen berücksichtigt. Sie kann beliebig klein sein (auch Null), ohne dass große CAM-Datenmengen verursacht werden (anders als bei "Solid"-Polygonen, bei denen die Linienbreite nicht zu klein gewählt werden sollte).

    PORT

    Funktion
    Hinzufügen von Ports zu Modulen.
    Syntax
    PORT 'module_instance_name' 'net_name' options •..
    PORT 'module' 'net_name' options •..
    PORT 'module' 'net_name' options|DELETE
    Siehe auch
    MODULE

    Der PORT-Befehl wird verwendet, um in hierarchischen Schaltplänen Ports zu Modulen hinzuzufügen.

    Die Lage und Orientierung werden bezogen auf die nächstgelegene Modulseite automatisch ermittelt.

    Ein Port kann ein Netz eines Moduls exportieren und stellt einen Anschlusspunkt für ein weiteres Netz zur Verfügung. Ein dort angeschlossenes Netz stellt den Namen und die Netzklasse zur Verfügung. Name und Klasse des Netzes im Modul werden also damit überschrieben.

    Wird für net_name ein einfacher Busname verwendet (siehe Namen), exportiert der Port alle diese Netze auf einmal und stellt einen Anschlusspunkt für einen passenden Bus zur Verfügung.

    Namen

    Durch den gewählten Namen wird bestimmt, welches Netz des Moduls exportiert wird.

    Der Name kann auch ein einfacher Bus-Name mit nur einem Bereich sein, wie z.B. 'PA[0..7]' (Synonyme sind hier nicht erlaubt).

    Options

    Direction

    Die logische Richtung des Signalflusses. Sie ist für den Electrical Rule Check (siehe ERC-Befehl) von Bedeutung. Möglich sind:

    NC not connected
    In Eingang
    Out Ausgang (totem-pole)
    IO 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

    Default: IO

    Die Direction von bereits vorhandenen Ports kann hiermit auch verändert werden.

    DELETE

    Mit der Option DELETE kann ein Port gelöscht werden.

    Editieren

    Der MOVE-Befehl kann zum Verschieben von Ports verwendet werden. Mit Ctrl+Linke lassen sich die Ports an ihrem Verbindungs-Punkt selektieren und entlang des Randes der Modul-Instanz verschieben.

    Der INFO-Befehl kann verwendet werden, um die Eigenschaften von Ports zu verändern. Hierzu erfolgt die Selektion ebenfalls mit Ctrl+Linke.

    Der DELETE-Befehl kann zum Löschen eines Ports durch Selektion mit Ctrl+Linke verwendet werden.

    Bei angeschlossenem Netz kann die Selektion mehrdeutig sein. Benutzen Sie hierbei bitte Ctrl+Rechte um zum gewünschtem Objekt (in dem Fall Port) zu schalten.

    PREFIX

    Funktion
    Präfix für Schaltzeichen oder ein Modul festlegen.
    Syntax
    PREFIX prefix_string;
    Siehe auch
    CONNECT, MODULE, 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.

    Wenn ein Modul editiert wird, kann dieser Befehl zum Ändern des Präfix des Moduls verwendet werden.

    Beispiel

    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.

    PRINT

    Funktion
    Druckt eine Zeichnung auf dem System-Drucker aus.
    Syntax
    PRINT [factor] [-limit] [options] [;]
    Siehe auch
    CAM-Prozessor, Drucken auf dem System-Drucker

    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
    ALIGN druckt in einer gegebenen Anordnung; die Art der Anordnung muss unmittelbar nach dieser Option folgen
    WINDOW druckt den momentan sichtbaren Ausschnitt der Zeichnung
    PORTRAIT druckt in Hochformat
    LANDSCAPE druckt in Querformat
    HIERARCHY druckt die Schaltplanseiten von Modulen in ihrer hierarchischen Verwendung

    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.

    Drucken in eine Datei

    Die FILE Option kann dazu benutzt werden in eine Datei zu drucken. Falls diese Option angegeben wird, muss der Dateiname unmittelbar nach ihr folgen.

    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.

    Auf eine bestimmte Papiergröße drucken

    Die PAPER-Option gibt an, auf welche Papiergröße gedruckt werden soll. Ihr muss unmittelbar einer der Namen für Papiergrößen folgen, die in der Combo-Box Papier des Drucken-Dialogs aufgelistet sind, wie etwa A4, Letter etc. Soll eine benutzerdefinierte Papiergröße benutzt werden, so muss diese im Format
    Breite x Höhe Einheit
    
    (ohne Leerzeichen) angegeben werden, wie in
    PRINT PAPER 200x300mm
    PRINT PAPER 8.0x11.5inch
    
    Breite 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.

    Einen Bereich von Schaltplanseiten drucken

    Mit der SHEETS Option kann ein ausgewählter Bereich von Schaltplanseiten gedruckt werden. Der Bereich wird in Form von zwei Zahlen angegeben, die durch '-' getrennt werden, etwa 2-15. Ohne diese Option wird nur die aktuell im Editor befindliche Seite gedruckt. Um alle Seiten auszudrucken, kann der Bereich ALL benutzt werden (wobei Groß-/Kleinschreibung egal ist, das Wort aber voll ausgeschrieben werden muss). Ein Bereich kann auch aus einer einzelnen Zahl bestehen, etwa 42, wodurch genau diese Seite gedruckt wird. Ist kein Schaltplan geladen, so hat diese Option keine Bedeutung.

    Druck mit einer Anordnung

    Bei der Option ALIGN können die Einstellungen T (oben), C (mittig) und B (unten) für vertikale, und R (rechts), C (mittig) und L (links) für horizontale Anordnung verwendet werden. So wird durch PRINT ALIGN TL; in Anordnung oben links gedruckt. Wenn nur eine Richtung angegeben ist, wird für die andere Richtung mittig angenommen (so z.B. PRINT ALIGN B; zum Drucken unten mittig). Die Reihenfolge der Einstellungen spielt keine Rolle.

    Schaltplanseiten von Modulen drucken

    Wenn die aktuelle Schaltplanseite zu einem Modul gehört, bezieht sich eine Bereichsangabe auf dieses Modul. Mit der Option SHEETS ALL werden alle Schaltplanseiten des Hauptschaltplans und alle Schaltplanseiten aller Module gedruckt. Mit der zusätzlichen Option HIERARCHY werden die Schaltplanseiten von Modulen für jede Verwendung in Modulinstanzen mit entsprechenden Bauteil- und Netznamen gedruckt.

    Beispiele

    PRINT ö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

    QUIT

    Funktion
    Beendet die Arbeit mit EAGLE
    Syntax
    QUIT
    Dieser Befehl beendet die Arbeit mit EAGLE. Sind seit dem letzten Abspeichern der Zeichnung oder der Bibliothek Änderungen vorgenommen worden, erscheint ein Popup-Menü, das nachfragt, ob die die Zeichnung vorher abgespeichert werden soll. Beantwortet man diese Frage mit no (n), dann wird das Programm ohne Abspeichern der Zeichnung beendet. Bei Cancel bleibt man im Programm.

    Sie können das Programm von jeder Stelle aus mit Alt+X verlassen.

    RATSNEST

    Funktion
    Neuberechnen der Luftlinien und Polygone.
    Syntax
    RATSNEST
    RATSNEST signal_name ..
    RATSNEST ! signal_name ..
    Siehe auch
    SIGNAL, MOVE, POLYGON, RIPUP

    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.

    Luftlinien der Länge Null

    Enden zwei oder mehr Leiterbahnen desselben Signals am selben Punkt, aber auf unterschiedlichen Layern, und sind die Signale nicht über eine Durchkontaktierung verbunden, dann wird eine Luftlinie der Länge Null erzeugt und als X-förmiges Kreuz im Unrouted-Layer dargestellt. Dasselbe gilt für gegenüberliegende SMDs (auf Top- und Bottom-Layer), die zum selben Signal gehören.

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

    Überprüfen, ob alles geroutet ist

    Wenn kein unverdrahtetes Signal mehr vorhanden ist, gibt der RATSNEST-Befehl die Meldung
    Ratsnest: Nichts zu tun!
    
    aus. Andernfalls erscheint die Meldung
    Ratsnest: Luftlinien: xx
    
    wobei xx die Zahl der ungerouteten Luftlinien repräsentiert.

    Platzhalter

    Falls der signal_name-Parameter angegeben wurde, so sind die Zeichen '*', '?' und '[]' Platzhalter und haben folgende Bedeutung:

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

    Ausgewählte Luftlinien ausblenden

    Manchmal kann es sinnvoll sein, die Luftlinien von bestimmten Signalen auszublenden, zum Beispiel wenn diese später durch ein Polygon verbunden werden. Typischerweise sind dies Versorgungssignale die viele Luftlinien haben, aber nicht explizit geroutet werden, und so nur die Luftlinien anderer Signale verdecken.

    Um Luftlinien auszublenden kann der RATSNEST-Befehl mit einem Ausrufezeichen ('!'), gefolgt von einer Liste von Signalnamen, aufgerufen werden:

    RATSNEST ! GND VCC
    
    Hiermit würden die Luftlinien der Signale GND und VCC ausgeblendet.
    Um die Luftlinien wieder einzublenden geben Sie einfach den RATSNEST-Befehl ohne das Zeichen '!' mit der Liste der Signale ein:
    RATSNEST GND VCC
    
    Damit 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 VCC
    
    womit 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 eine Leiterbahn in eine Luftlinie verwandelt wird.

    Differential Pairs

    Luftlinien für Differential Pair Signale bevorzugen offene Leiterbahnenden.

    RECT

    Funktion
    Rechteck in eine Zeichnung einfügen.
    Syntax
    RECT [orientation] • •..
    Maustasten
    Mittlere wählt den Layer.
    Siehe auch
    CIRCLE

    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.

    Sperrflächen

    Der RECT-Befehl in den Layern tRestrict, bRestrict und vRestrict dient zum Anlegen von Sperrflächen für den Autorouter.

    Nicht Bestandteil von Signalen

    Rechtecke in den Layer Top, Bottom oder Route2...15 gehören nicht zu Signalen. Der DRC meldet deshalb Fehler, wenn sie mit Leiterbahnen, Pads usw. überlappen.

    REDO

    Funktion
    Befehl erneut ausführen.
    Syntax
    REDO;
    Siehe auch
    UNDO, Forward&Back-Annotation

    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 und REMOVE löschen die Vorgeschichte.

    UNDO/REDO ist vollkommen in den Mechanismus der Forward&Back-Annotation integriert.

    REMOVE

    Funktion
    Löschen von Dateien, Devices, Symbolen, Packages, Modulen und Schaltplanseiten.
    Syntax
    REMOVE name
    REMOVE name.Sxx
    REMOVE name.mod
    REMOVE name.Mxx
    Siehe auch
    OPEN, RENAME, MODULE

    Dateien löschen

    Der REMOVE-Befehl löscht im Platinen- und Schaltplan-Editier-Modus die mit name angegebene Datei.

    Devices, Symbole, Packages

    Im Bibliotheks-Editier-Modus löscht der REMOVE-Befehl aus der aktiven Bibliothek das unter dem Namen name gespeicherte Device, Symbol oder Package. Der Name kann mit einer Erweiterung (z. B. REMOVE name.pac) angegeben werden. Wenn Sie den Namen ohne Erweiterung angeben, müssen Sie sich im entsprechenden Editier-Modus des Bibliotheks-Editors befinden um ein Objekt zu löschen (z. B. im Package-Editor um ein Package zu löschen).

    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 im Bibliotheks-Editier-Modus löscht den Undo-Puffer.

    Schaltplan-Seiten

    Der REMOVE-Befehl kann auch zum Löschen von Seiten aus einem Schaltplan verwendet werden, dabei kann der Name der geladenen Zeichnung entfallen. Zum Beispiel:
    REMOVE .S3
    
    lö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.

    Module

    Der REMOVE-Befehl kann auch zum Löschen von Modulen oder Seiten von Modulen aus einem Schaltplan verwendet werden. Zum Beispiel:
    REMOVE name.mod
    REMOVE name.m3
    

    REMOVEMODEL

    Function
    Entfernt das zugeordnete SPICE-Modell und seine Eigenschaften von den gewählten Bauteilen. Wird dieser Befehl im Schaltplan ausgeführt, kann er nur auf Bauteile angewendet werden, die vom Schaltplan und nicht von der Bibliothek aus zugeordnet wurden. Startet man den Befehl vom Bibliothekseditor aus, werden alle Zuordnungen und Attribute für alle Gates im Device gelöscht.
    Syntax
    REMOVEMODEL name
    See also
    ADDMODEL

    OVERRIDEREMOVE

    Funktion
    Entfernen eines überschriebenen 3D-Packages von einem Bauteil im Schaltplan- oder Layout-Editor.
    Syntax
    OVERRIDEREMOVE
    Maustasten
    Linke wählt das Bauteil auf das der Befehl angewendet werden soll.

    RENAME

    Funktion
    Symbole, Devices oder Packages in einer Bibliothek umbenennen.
    Syntax
    RENAME old_name new_name;
    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

    Funktion
    Bauteil austauschen.
    Syntax
    REPLACE •..
    REPLACE device_name[@library_name] [P3D=3d_package] •..
    REPLACE part_name device_name[@library_name] [P3D=3d_package] ..
    REPLACE package_name •..
    REPLACE element_name package_name ..
    Siehe auch
    SET, UPDATE

    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 ein library_name angegeben wird und dieser Leerzeichen enthält, so muss der ganze device_name@library_name in einfache Hochkommas eingeschlossen werden.

    Das 3D-Package des Devices kann über die Syntax P3D=3d_package gewählt werden. 3d_package kann entweder der Name oder der URN des zugeordneten 3D-Packages sein. Bei der Angabe spielt Groß-/Kleinschreibung keine Rolle; es werden keine Platzhalter unterstützt.

    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.

    Gleiche Namen

    Die erste Betriebsart wird mit
    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.

    Gleiche Koordinaten

    Die zweite Betriebsart wird mit
    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

    Funktion
    Verdrahtete in unverdrahtete Signale (Luftlinien) verwandeln.
    Polygondarstellung auf "Umrisse".
    Syntax
    RIPUP;
    RIPUP [ @ ] [ ! ] •..
    RIPUP [ @ ] [ ! ] signal_name..
    Maustasten
    Ctrl+Rechte verwandelt die Signale in der Gruppe in Luftlinien.
    Siehe auch
    DELETE, GROUP, POLYGON, RATSNEST

    Der Befehl RIPUP wird dazu verwendet, bereits verlegte Signale wieder in Luftlinien zu verwandeln. Der Befehl kann verwendet werden für:

    • alle Signale (RIPUP;)
    • alle Signale ausser den genannten (RIPUP ! GND VCC;)
    • bestimmte Signale (z. B. RIPUP D0 D1 D2;)
    • bestimmte Signalabschnitte (mit der Maus anzuklicken)
    • alle Polygone (RIPUP @;)
    • alle Polygone bestimmter Signale (e.g. RIPUP @ GND VCC;)
    • alle Polygone ausser denen bestimmter Signale (e.g. RIPUP @ ! GND VCC;)
    Wird mit RIPUP auf eine Luftlinie geklickt, so werden die an dieser Luftlinie angrenzenden verlegten Leiterbahnen und Vias bis hin zum nächsten Pad, SMD oder der nächsten Luftlinie in Luftlinien verwandelt.
    RIPUP signal_name..
    
    Wirkt auf das gesamte Signal "signal_name" jedoch nur, wenn es mit Elementen verbunden ist (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!

    Platzhalter

    Falls der signal_name-Parameter angegeben wurde, so sind die Zeichen '*', '?' und '[]' Platzhalter und haben folgende Bedeutung:

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

    Polygone

    Falls der RIPUP-Befehl mit einem Namen auf ein Signal angewendet wird, zu dem ein Polygon gehört, wird das Polygon anschließend mit seinen Umrissen dargestellt (schnellerer Bildaufbau!). Soll das Polygon wieder freigerechnet werden, ist der Befehl RATSNEST auszuführen.

    ROTATE

    Funktion
    Drehen von Objekten.
    Syntax
    ROTATE orientation • ..
    ROTATE orientation 'name' ..
    Maustasten
    Ctrl+Rechte dreht die Gruppe.
    Linke&Ziehen rotiert das Objekt um beliebige Winkel.
    Ctrl+Rechte&Ziehen rotiert die Gruppe um beliebige Winkel.
    Siehe auch
    ADD, MIRROR, MOVE, LOCK, GROUP

    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.

    Die Hochkommas um name sind nötig zur Unterscheidung vom Wert der Orientierung wie in

    ROTATE R45 'R1'
    
    Sie können weggelassen werden, wenn der Kontext klar ist.

    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

    Beim Drehen von Elementen bewegen sich die angeschlossenen Leitungen mit (Achtung auf Kurzschlüsse!).

    Elemente lassen sich nur drehen, wenn der tOrigins- bzw. der bOrigins-Layer sichtbar ist.

    Texte

    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.

    ROUTE

    Funktion
    Luftlinien in Leiterbahnen umwandeln.
    Syntax
    ROUTE [width] • [curve | @radius] •..
    ROUTE name ..
    Maustasten
    Linke startet den Routevorgang an einem beliebigen Punkt einer Leiterbahn oder eines Vias. Beim Absetzen setzt ein Via.
    Shift+Linke startet den Routevorgang mit der gleichen Breite wie eine bestehende Leiterbahn.
    Mittlere wählt den Layer.
    Shift+Mittlere öffnet den Start-Layer-Auswahldialog, wenn man bei einem Multi-Layer-Objekt beginnt.
    Rechte ändert den Knickwinkel (siehe
    SET Wire_Bend).
    Shift+Rechte kehrt die Richtung des Weiterschaltens des Knickwinkels um.
    Ctrl+Rechte schaltet zwischen korrespondierenden Knickwinkeln hin und her.
    Ctrl+Linke beim Absetzen eines Leiterbahn-Endpunkts definiert den Kreisbogen-Radius.
    Tastatur
    Eingabetaste übergibt die aktuelle Cursor-Position und vervollständigt die Leiterbahn bis zum Anker-Objekt der Luftlinie.
    Leertaste schaltet zum nächsthöheren Routing-Layer (und initiiert die Platzierung eines Vias).
    Shift+Leertaste schaltet zum nächstniedrigeren Layer (und initiiert die Platzierung eines Vias).
    Backspace (Löschen auf MacOS) macht das Ergebnis des letzten Linksklicks rückgängig.
    Ctrl+Leertaste wählt den Start-Layer bei einem Multi-Layer-Objekt in Vorwärtsrichtung.
    Ctrl+Shift+Leertaste wählt den Start-Layer bei einem Multi-Layer-Objekt in Rückwärtsrichtung.

    Siehe auch AUTO, FANOUT, UNDO, LINE, MITER, SIGNAL, SET, RATSNEST

    Der ROUTE-Befehl dient dazu, die unverdrahteten Signale (dargestellt als Luftlinien im Unrouted-Layer) in Leiterbahnen umzuwandeln.

    Ist der ROUTE-Befehl aktiviert, kann die Breite (width) der entstehenden Leiterbahn 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 eine Linie oder zwei Linien-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 LINE-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 der selektierten Leiterbahn (oder Via), die 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 die selektierte Linie ein Kreisbogen, so beginnt die Luftlinie am nächstgelegenen Endpunkt der Leiterbahn.

    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.

    Single Layer Modus

    Wird der Single Layer Modus beim Routen aktiviert, sind alle Layer mit Ausnahme des aktiven Routing-Layers grau dargestellt. Damit schafft man eine konzentrierte Umgebung, die es erleichtert die Arbeit zu verrichten.
    SET SINGLE_LAYER_MODE ON | OFF;
    

    Interaktives Routing

    Es gibt drei Modi zum Interaktiven Routing, wobei jeder sein eigenes Verhalten zeigt, wenn die Leiterbahnen während des Verlegens in die Nähe von Hindernisse kommen: Hindernisse ignorieren, Hindernisse umgehen und Hindernisse verschieben. Wenn der ROUTE-Befehl aktiv ist, kann man diese Modi über Icons in der Parameterleiste auswählen. Die Standard-Einstellung ist Hindernisse umgehen.

    Hindernisse ignorieren (SET OBSTACLE_MODE IGNORE)

    Im Modus "Hindernisse ignorieren" dürfen Sie Leiterbahnen und Vias an beliebigen Stellen im Layout platzieren, unabhängig von den Design-Regeln. Bitte achten Sie sorgfältig darauf, dass Sie beim Verlegen im Modus "Hindernisse ignorieren" keine Kurzschlüsse mit den nächstgelegenen Objekten verursachen.

    Hindernisse umgehen (SET OBSTACLE_MODE WALKAROUND)

    "Hindernisse umgehen" erlaubt es Leiterbahnen und Vias Design-Regel-konform zu verlegen. Dieser Modus erkennt Hindernisse, die auf dem Weg Ihrer Leiterbahn liegen und umgeht diese automatisch. Wenn Sie in diesem Modus den Layer wechseln wollen und ein Via notwendig wird, findet der Befehl die nächstgelegene mögliche Position für die Durchkontaktierung (wieder im Einklang mit den Design-Regeln).

    Hindernisse verschieben (SET OBSTACLE_MODE PUSH)

    Dieser Modus folgt den Design-Regeln und schiebt bewegbare Hindernisse zur Seite um Platz für die zu verlegenden Leiterbahnen zu schaffen. Wenn man im Modus "Hindernisse verschieben" den Layer wechselt, werden auch Objekte zur Seite geschoben um Raum für die Durchkontaktierung zu schaffen.

    Wenn Sie im Modus "Hindernisse umgehen" oder "Hindernisse verschieben" im Board in Bereichen mit vielen vorverlegten Leiterbahnen, werden Sie gelegentlich Bedingungen vorfinden bei denen ROUTE keinen Pfad zur aktuellen Cursorposition für die Leiterbahn finden kann. In diesem Fall wird am Ende der aktuellen Leiterbahn ein Fehler-Indikator angezeigt, der darüber informiert, dass der Routingversuch an die gewünschten Position fehlgeschlagen ist.

    Semi-automatische (Quick) Routing Modi

    Es sind verschiedene halbautomatische Routing-Modi verfügbar, die alle die Design-Regeln berücksichtigen, einschließlich Mindestabstände, min. Leiterbahnbreite, Via-Durchmesser und Abstandsfaktor für Differentielle Paare. Es gibt folgende semi-automatische Modi: Quick Route Airwire, Quick Route Signal, Quick Route Multi-Signals und Smooth Signal (Signalverlauf glätten). Jeder dieser Modi ist bereitgestellt, um je nach Auswahl für ein oder mehrere gewählte Signale im Design, das sofortige und vollständige Routingergebnis anzuzeigen. Gehört eines der gewählten Signale zu einem Differentiellen Paar, werden automatisch beide Signale des Differentiellen Paares verlegt. Kann der ROUTE-Befehl in einem dieser Modi das Routing für eine Signallinie nicht vollständig durchführen, wird das durch einen Piep signalisiert. Die semi-automatischen Routing-Modi können über Icons in der Parameterleiste des ROUTE-Befehls gewählt werden.

    Quick Route Airwire (SET ROUTE_MODE QUICK_ROUTE_AIRWIRE)

    Im Modus "Quick Route Airwire" wählt man individuelle Luftlinien, die verlegt werden sollen und ROUTE verlegt diese unverzüglich automatisch. Sofern eine nahegelegene Luftlinie eindeutig zugeordnet werden kann, ist es auch möglich auf eine bestehende Leiterbahn, ein Pad oder Via zu klicken um diese zu verlegen.

    Quick Route Signal (SET ROUTE_MODE QUICK_ROUTE_SIGNAL)

    In diesem Modus wählen Sie beliebige Signal-Objekte (Luftlinien, Leiterbahnen, Pads oder Vias) und der ROUTE-Befehl beginnt unverzüglich alle Luftlinien, die zu diesem Signal gehören. Werden keine Luftlinien gefunden, zeigt der ROUTE-Befehl eine Fehlermeldung.

    Quick Route Multi-Signals (SET ROUTE_MODE QUICK_ROUTE_MULTISIGNAL)

    Im "Quick Route Multi-Signals"-Modus zeichnen Sie zuerst eine Auswahl-Linie, die alle Signalobjekte schneidet, die Sie simultan verlegen lassen wollen (vorhandene Wires, Pads und Vias). Zeichnen Sie weitere Auswahl-Linien um weitere Objekte zu selektieren. Mit der Esc-Taste löschen Sie die bisherige Auswahl und beginnen erneut. Mit der Enter-Taste können Sie alle an die ausgewählten Signale angeschlossenen Luftlinien routen.

    Smooth Signal (SET ROUTE_MODE SIGNAL_CLEANUP)

    Im Modus "Smooth Signal" kann man eine bestehende Leiterbahn wählen und der ROUTE-Befehl glättet den Leiterzug im angewählten Layer indem die Anzahl der Knickpunkte reduziert wird.

    Im Design Manager kann man einen oder mehrere Signal- oder Luftlinien-Einträge wählen und dann mit Rechtsklick + Quick Route diese im vom ROUTE-Befehl aktuell eingestellten Layer verlegen lassen.

    Auswahl des Routing-Layers und der Linienbreite

    Wenn Sie eine Luftlinie selektieren wird der Layer in dem geroutet wird durch Betrachtung der am Startpunkt vorhandenen Objekte wie folgt ermittelt:
    • befindet sich dort ein Objekt im aktiven Layer, so wird dieser beibehalten
    • ansonsten wird ein Layer der an diesem Punkt befindlichen Objekte genommen

    Wenn das Startobjekt beim Routen ein Multilayer-Objekt ist (also von mehreren Signallayern aus losgeroutet werden kann), kann man mit Ctrl+Leertaste bzw. Ctrl+Shift+Leertaste vorwärts bzw. rückwärts durch die Layer schalten.

    Beim Selektieren einer Luftlinie wird die Linienbreite zum Routen auf den Wert gesetzt, der sich aus den Design-Regeln und der Netzklasse des selektierten Signals ergibt, wenn der Schalter "Optionen/Einstellungen/Verschiedenes/Width und Drill bei Route autom. setzen" eingeschaltet ist. Während die Luftlinie am Cursor hängt können Sie eine andere Breite einstellen, und die Verbindung wird dann mit der neuen Breite berechnet. Gleiches gilt für die Daten von Vias.

    Wenn eine Luftlinie geroutet wird, die an einer bereits verlegten Leiterbahn beginnt, so übernimmt die neu verlegte Leiterbahn die Breite der bereits existierenden Leiterbahn, wenn beim Selektieren der Luftlinie die Shift-Taste gedrückt wird.

    Fangfunktion

    Der Endpunkt der dynamisch berechneten Luftlinie wird immer als zusätzlicher Rasterpunkt benutzt, auch wenn er nicht auf dem aktuellen Raster liegt. Hat die verbleibende Luftlinie eine Länge, die kürzer als SNAP_LENGTH ist, so schnappt die zu verlegende Leiterbahn automatisch auf den Endpunkt der Luftlinie, und bleibt dort, bis der Mauszeiger mindestens SNAP_LENGTH von diesem Punkt entfernt wird. Mit
    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.

    Loop removal

    Das Entfernen unnötiger Schleifen (Loop removal) ist ein Modus, der beim Neuverlegen einer bereits verlegten Leiterbahn zwischen zwei Pads den bisherigen, jetzt redundanten Pfad der Leiterbahn, inklusive vorhandener Vias automatisch entfernt. Dieser Modus kann über Icons in der Parameter-Toolbar des ROUTE-Befehls aktiviert werden.

    Der neue Leiterbahnverlauf kann an einem Pad, einem Via, einem Knickpunkt oder in der Mitte einer Linie beginnen und in gleicher Weise an einer Linie, Via oder Pad enden. Standardmäßig ist der Loop-Removal-Modus eingeschaltet. Es gelten folgende Bedingungen für das Entfernen unnötiger Schleifen:

    • Der zu entfernende Leiterbahnzug darf nicht mit einem Bauteil verbunden sein.
    • Der zu entfernende Leiterbahnzug darf keine T-Verbindung enthalten.

    Differential Pair Routing

    Differential Pairs sind Signale, die parallel und mit einem bestimmten Abstand zueinander verlegt werden müssen.

    Folgende Besonderheiten gelten:

    • Ein Differential Pair besteht aus zwei Signalen mit dem gleichen Namen, von denen der eine auf _P (das "positive" Signal) und der andere auf _N (das "negative" Signal) endet, zum Beispiel CLOCK_P und CLOCK_N. Die beiden Signale müssen auch der selben Netzklasse angehören.
    • Wird eine Luftlinie eines Differential Pairs selektiert, so werden beide Signale parallel verlegt. Der Abstand zwischen den beiden Signalen sowie die Linien- und Via-Abmessungen ergeben sich aus der Netzklasse der Signale, unabhängig von der Einstellung "Optionen/Einstellungen/Verschiedenes/Width und Drill bei Route autom. setzen".
    • Falls Sie nicht beide Signale routen wollen, können Sie die zweite Luftlinie durch Drücken der ESCape-Taste fallen lassen.
    • Beim Beginn des Routens eines Differential Pairs (wenn die Anfangspunkte der Luftlinien noch nicht den nötigen Abstand haben) werden Leiterbahnen gemäß dem aktuellen Knickwinkel von den Anfangspunkten zur aktuellen Position des Mauszeigers generiert. Beachten Sie bitte, dass es dabei vorkommen kann, dass sich die Leiterbahnen überlappen. Wählen Sie daher einen passenden Punkt von dem aus Sie das eigentliche parallele Routen beginnen.
    • Die Koordinaten, die Sie während des Routens eines Differential Pairs angeben, bilden eine "Mittellinie" entlang der die tatsächlichen Leiterbahnen links und rechts im passenden Abstand verlegt werden.
    • Da die Pads, an die ein Differential Pair angeschlossen sind, typischerweise nicht den selben Abstand haben wie er für die Leiterbahnen benötigt wird, müssen Sie solche Signale von beiden Seiten Routen. Das heißt, Sie beginnen an einem Bauteil, routen in Richtung des anderen Bauteils und routen den Rest indem Sie vom anderen Bauteil her beginnen. Dies ist notwending, da nur der erste Schritt in einer Routing-Sequenz Leiterbahnen generiert, die an Positionen beginnen, die nicht den erforderlichen Abstand haben.
    • Wenn Sie zu den Leiterbahnenden eines Differential Pairs in einem anderen Layer hinrouten, und die Linien sind genau aufeinander ausgerichtet, so werden die passenden Vias automatisch erzeugt.
    • Die speziellen Mausfunktionen Shift+Linke (beim Absetzen ein Via setzen) und Ctrl+Linke (Kreisbogen-Radius definieren) funktionieren im Differential Pair Modus nicht.
    • Wenn Sie mit Ctrl+Linke Maustaste den Route-Vorgang an einer beliebigen Stelle des Signals beginnen, so können Sie damit nur das selektierte Signal routen, und nicht das Differential Pair zu dem dieses Signal möglicherweise gehört.
    • Differential Pairs können nur rein manuell geroutet werden. Der Follow-me Router und der Autorouter behandeln sie wie ganz normale Signale.
    Mit dem MEANDER-Befehl können Sie Längenunterschiede zwischen den beiden Signalen eines Differential Pairs ausgleichen.

    RUN

    Funktion
    Führt ein User-Language-Programm aus.
    Syntax
    RUN file_name [argument ...]
    Siehe auch SCRIPT

    Der RUN-Befehl startet das User-Language-Programm mit dem Namen file_name.
    Die optionale Argument-Liste ist für das ULP über die Builtin-Variablen argc und argv verfügbar.

    Von einem Kontextmenü aus gestartet wird das entsprechende Objekt einer Gruppe zugeordnet. Es ist mit der Builtin-Funktion ingroup() identifizierbar für weitere Verarbeitung. Im Falle eines Wire werden dabei die Gruppen-Bits entsprechend dem Selektionszustand gesetzt (erster, zweiter oder beide Endpunkte). Das erlaubt zu bestimmen, welcher Endpunkt selektiert wurde. Eine vorherige Gruppen-Definition wird dadurch ungültig.

    ULP von Script-Datei ausführen

    Wenn ein ULP von einer Script-Datei aufgerufen wird und das Programm einen Wert ungleich 0 zurückgibt (durch einen Aufruf der Funktion exit() oder weil das STOP-Symbol angeklickt wurde), wird die Ausführung der Script-Datei beendet.

    Editor-Befehle von einem ULP ausführen

    Ein ULP kann die exit()-Funktion auch mit einem string-Parameter verwenden, um einen Befehl direkt in einem Editor-Fenster auszuführen.

    SCRIPT

    Funktion
    Befehls-Datei ausführen.
    Syntax
    SCRIPT file_name;
    Siehe auch
    SET, MENU, ASSIGN, EXPORT, RUN

    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.

    Beispiele

    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:

    • das Befehlsmenü einstellen,
    • Tasten belegen,
    • Platinenumrisse laden,
    • Farben festlegen.
    SCRIPT-Dateien enthalten EAGLE-Befehle, entsprechend den Syntax-Regeln. Zeilen, die mit '#' beginnen, sind Kommentarzeilen.

    Fortsetzungszeilen

    Bei manchen Befehlen kann es erforderlich sein, mehrere Zeilen zu belegen. Das Zeichen '\' am Ende einer Kommandozeile sorgt dafür, dass das erste Wort der nächsten Zeile nicht als Befehl interpretiert wird. Damit lassen sich in vielen Fällen Hochkommas vermeiden.

    Start-Parameter setzen

    Die SCRIPT-Datei eagle.scr wird jedesmal ausgeführt wenn eine Zeichnung neu in einem Editor-Fenster geladen wird, oder der Editier-Modus in einer Bibliothek gewechselt wird, sofern eagle.scr im Projekt-Verzeichnis oder im Script-Pfad steht.

    Script Labels

    Die SCRIPT-Datei eagle.scr benutzt Labels der Form

    EDITOR:

    wobei EDITOR einer der Schlüsselwörter SCH, BRD, LBR, DEV, PAC oder SYM sein kann. Das stellt sicher, dass nur der entsprechende Abschnitt im entsprechenden Editor ausgeführt wird. Wenn zum Beispiel ein neues Board geöffnet wird, wird nur der Abschnitt ausgeführt, der mit BRD: beginnt (bis zum nächsten Label, falls vorhanden). Dies eröffnet die Möglichkeit von editorspezifischen Menüs mit Hilfe des MENU Befehls. Das Label muss am Zeilenanfang stehen.

    Script-Datei im Bibliotheks-Editor ausführen

    Alle Layer werden nur dann erkannt, wenn vorher der Bibliotheks-Editor neu geöffnet worden ist.

    SET

    Funktion
    Systemparameter verändern.
    Syntax
    SET
    SET options;
    Mit dem SET-Befehl können Parameter festgelegt werden, die das Verhalten des Programms, die Bildschirmdarstellung und die Benutzeroberfläche betreffen. Die genaue Syntax ist im folgenden beschrieben.

    Wird der SET-Befehl ohne Parameter aufgerufen, so erscheint ein Dialog in dem alle Parameter eingestellt werden können.

    Benutzer-Interface

    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. Werte < 1 werden als Faktor, Werte ≥ 1 als Prozentzahl interpretiert.
    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. Werte < 1 werden als Faktor, Werte ≥ 1 als Prozentzahl interpretiert.
    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..;
    SET DLINE_WIDTH_MENU value..;
    SET DLINE_EXT_WIDTH_MENU value..;
    SET DLINE_EXT_LENGTH_MENU value..;
    SET DLINE_EXT_OFFSET_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;
    Kontextmenüs SET CONTEXT objecttype text commands;
    Für die selektierbaren Objekttypen können die Kontextmenüs (Rechte-Maus-Klick) um beliebige Einträge erweitert werden. Für objecttype spielt Gross-/Kleinschreibung keine Rolle. text stellt den Menütext dar, commands die Kommandofolge, die bei Auswahl dieses Menüeintrags ausgeführt werden soll. Leerzeichen sind möglich, wenn man den Ausdruck in Hochkomma setzt. Hochkommas innerhalb müssen verdoppelt werden (vgl. TEXT). Beispiel:
    SET CONTEXT Element Export 'run myexport.ulp';
    Dem Kontextmenü von Elementen wird der Eintrag Export hinzugefügt, der ein entsprechendes ULP startet.
    Ein bestehender benutzerdefinierter Eintrag kann auch überschrieben werden.
    Die Einstellungen werden in der EagleRc-Datei gespeichert. Es können beliebig viele Einträge hinzugefügt werden.
    Löschen der Einträge: Mit
    SET CONTEXT objecttype; werden alle Einträge dieses Objekttyps wieder gelöscht. Mit SET CONTEXT; werden sämtliche benutzerdefinierte Menüeinträge gelöscht.
    Alle selektierbaren Objekttypen werden unterstützt. Diese sind attribute, circle, dimension, element, frame, gate, hole, instance, junction, label, modinst (Modul-Instanz), pad, pin, rectangle, smd, text, via und wire.
    Einschränkung bezüglich ULP-Ausführung:
    Um das selektierte Objekt für die Funktion ingroup() verfügbar zu haben, vermeiden Sie bitte ';' innerhalb der Apostrophe (also nicht 'run myexport.ulp;',sondern 'run myexport.ulp').
    Knickwinkel für Linien 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 zur Linie 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 Linien 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;

    Bildschirmdarstellung

    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.

    Mode-Parameter

    Package-Check SET CHECK_CONNECTS OFF | ON;
    Der ADD-Befehl prüft, ob bei einem Device jedem Pin ein Pad (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;
    Linien-Optimierung SET OPTIMIZING OFF | ON;
    Linien, die nach MOVE, ROUTE oder SPLIT in einer Linie liegen, werden zu einer Linie zusammengefasst, falls On eingestellt ist. Siehe auch OPTIMIZE.
    Netz-Linie beenden SET AUTO_END_NET OFF | ON;
    Automatisches Beenden von Netzen oder Bussen. Siehe NET oder BUS.
    Automatische Junctions SET AUTO_JUNCTION OFF | ON;
    Automatisches Setzen von Junctions. Siehe JUNCTION.
    Automatische Bestätigung SET CONFIRM OFF | NO | YES | OPT1 | OPT2 | OPT3 | OPT4 | OPT5 | OPT6 | OPT7 | OPT8 | OPT9;
    Ermöglicht die automatische Behandlung von Bestätigungs-Dialogen (weiteres siehe unten).
    File-Locking SET LOCKING OFF | ON;
    Zum Aus- und Einschalten des Schreibschutzes für geöffnete Dateien. Die Einstellung wirkt sich sofort aus, d.h. zu den momentan geöffneten Dateien werden Lock-Dateien erzeugt bzw. gelöscht. Siehe Datei-Locking für weitere Details.

    Farben

    Es gibt drei Paletten für schwarzen, weißen und farbigen Hintergrund. Jede Palette hat 64 Farb-Einträge, die auf jeden beliebigen ARGB-Wert gesetzt werden können. Der Paletten-Eintrag 0 wird für die Hintergrundfarbe verwendet (in der "weißen" Palette ist dieser Eintrag nicht veränderbar, da diese Palette auch zum Ausdrucken verwendet wird, wo der Hintergrund immer weiß ist).

    Die Farbpaletten können entweder über den Dialog unter "Optionen/Einstellungen/Farben" verändert werden, oder mittels des Befehls

    SET PALETTE index argb
    
    wobei 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|COLORED
    
    kö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 Linien 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

    Automatische Bestätigung

    Manchmal zeigt EAGLE dem Benutzer Informationen bzw. Warnungen an, oder verlangt nach einer Entscheidung, wie weiter verfahren werden soll. Dies mag bei automatisierten Abläufen (wie
    Skripten) unerwünscht sein. Der Befehl
    SET CONFIRM YES
    
    sorgt dafür, dass jeder Mitteilungs-Dialog automatisch so bestätigt wird, als hätte der Benutzer den "positiven" Button ("OK" bzw. "Ja") angeklickt. Der Dialog selbst wird überhaupt nicht dargestellt. Entsprechend wirkt der Befehl
    SET CONFIRM NO
    
    als hätte der Benutzer den "negativen" Button ("Nein") angeklickt, falls ein solcher vorhanden ist. Andernfalls wird der Dialog einfach bestätigt.

    Zur Bestätigung von Dialogen mit zusätzlichen Optionen (z.B. Umbenennen eines Netz-Segments oder eines Signal-Polygons) gibt es die Schlüsselwörter OPT1..9.

    SET CONFIRM OPT2
    NAME GND (x y)
    
    Schließlich schaltet
    SET CONFIRM OFF
    
    die automatische Bestätigung wieder aus. Wird die automatische Bestätigung nicht explizit ausgeschaltet, so fällt sie automatisch auf OFF zurück, sobald das Editor-Fenster wieder eine interaktive Eingabe des Benutzers annimmt.

    Sie sollten nicht ein SET CONFIRM YES an den Anfang eines Scripts setzen und dann viele Befehle "im Stillen" ausführen. Besser ist es, dies gezielt auf einzelne Befehle anzuwenden, wie in

    SET CONFIRM YES
    REMOVE filename
    SET CONFIRM OFF
    
    Seien Sie extrem vorsichtig bei der Verwendung dieses Befehls! Mitteilungs-Dialoge blind zu bestätigen kann dazu führen, dass wichtige Mitteilungen übersehen werden. Das Ergebnis kann dann unter Umständen nicht das sein, was der Benutzer erwartet.

    Platinengrenzen (nur Make-Pro-Edition)

    Die Make-Pro-Edition hat eine begrenzte Platinenfläche, läßt aber variable Breite und Höhe zu (siehe EAGLE-Editionen). Um diese Grenzen anzupassen, können die Befehle
    SET LIC_WIDTH width
    SET LIC_HEIGHT height
    
    benutzt werden. Wenn die Breite gesetzt wird, paßt sich die Höhe entsprechend an und umgekehrt.

    EagleRc-Parameter

    Manchmal ist es notwendig, ein kleines Funktionsdetail einstellbar zu machen, zum Beispiel weil einige Benutzer es unbedingt anders haben wollen. Diese Parameter sind nicht in irgendwelchen Dialogen verfügbar, sondern können ausschließlich über einen Eintrag in der eaglerc-Datei verändert werden. Um dieses zu vereinfachen wird jeder Parameter, der nicht in obigen Schlüsselwörtern gefunden wurde, in den eaglerc-Parametern gesucht und kann so mit dem SET-Befehl verändert werden. Im Prinzip können Sie so jeden Parameter der eaglerc-Datei verändern. Beachten Sie bitte, dass die Parameternamen vollständig und genau so, wie unten aufgelistet, angegeben werden müssen (auch bezüglich Groß-/Kleinschreibung). Der Parameterwert ist typischerweise '0' oder '1', um eine Funktion aus- bzw. einzuschalten. Nach der Veränderung eines Parameters, der die Bildschirmdarstellung beeinflußt, kann es nötig sein, das Zeichenfenster aufzufrischen.

    Beispiel

    SET Option.DrawUnprocessedPolygonEdgesContinuous 1;
    
    Folgende eaglerc-Parameter stehen für Spezial-Einstellungen zur Verfügung:

    Cmd.Copy.ClassicEagleMode
    In älteren EAGLE-Versionen wurde der COPY-Befehl ausschließlich dazu benutzt, Objekte innerhalb einer Zeichnung zu kopieren - anders als in Windows, wo COPY eine Kopie der selektierten Objekte (also der GRUPPE) in die Zwischenablage des Systems platziert. Ab Version 6 verhält sich der COPY-Befehl in EAGLE primär wie in anderen Windows-Applikationen, indem er eine Kopie der aktuellen Gruppe in die Zwischenablage legt. Die ursprüngliche Funktion des Kopierens selektierter Objekte, oder des Kopierens von Bibliothekselementen zwischen Bibliotheken, bleibt weiterhin vollständig verfügbar. Dies ist insbesondere wichtig, damit bestehende Scripts und ULPs weiterhin funktionieren. Was Windows-Anwender auch häufig irritiert hat ist, dass in EAGLE der CUT-Befehl die selektierte Gruppe lediglich in die Zwischenablage kopiert, sie aber nicht aus der Zeichnung gelöscht hat. Da ein CUT-Befehl, der die Gruppe löscht, in einem Board-/Schematic-Paar das über Forward- und Backannotation verbunden ist, nicht wirklich sinnvoll wäre, wurde dieser Befehl aus dem Pulldown-Menü und der Toolbar mit den Befehls-Buttons entfernt. Er steht weiterhin über die Befehlszeile und in Scripts zur Verfügung. Wird dieser Parameter auf '1' gesetzt, so wird die alte Verhaltensweise des COPY- sowie des CUT-Befehls wieder hergestellt. Beachten Sie bitte, dass diese Einstellung erst beim nächsten Öffnen eines Editor-Fensters wirksam wird.
    Cmd.Delete.WireJointsWithoutCtrl
    Falls Sie wollen, dass der DELETE-Befehl Linien-Verbindungspunkte löscht, ohne dass die Ctrl-Taste gedrückt wird, so können Sie diesen Parameter auf '1' setzen.
    Cmd.Name.RenameEntireNetByDefault
    Besteht ein Netz aus mehreren Segmenten, so wirkt der NAME-Befehl standardmäßig nur auf das selektierte Segment. Wird dieser Parameter auf '1' gesetzt, so wird standardmäßig das gesamte Netz umbenannt. Dieser Parameter gilt auch für Busse.
    Cmd.Name.RenameEntireSignalByDefault
    Enthält ein Signal ein Polygon, und der NAME-Befehl wird auf dieses Polygon angewendet, so wird standardmäßig nur das Polygon umbenannt. Wird dieser Parameter auf '1' gesetzt, so wird standardmäßig das gesamte Signal umbenannt.
    Cmd.Wire.IgnoreCtrlForRadiusMode
    Falls Sie die spezielle Funktion beim Zeichnen einer Linie, mit der man durch Drücken von Ctrl den Radius eines Arcs definieren kann, nicht haben wollen, so können Sie diesen Parameter auf '1' setzen. Dadurch wird dieses Feature für alle Befehle, die Linien zeichnen, abgeschaltet.
    ControlPanel.View.AutoOpenProjectFolder
    Das automatische Öffnen des Projekt-Verzeichnisses beim Programmstart (bzw. wenn ein Projekt durch Klicken auf seinen grauen Button aktiviert wird) kann durch Setzen dieses Parameters auf '0' abgeschaltet werden.
    Erc.AllowUserOverrideConsistencyCheck
    Um Boards/Schematics bearbeiten zu können, die nur geringfügige Inkonsistenzen aufweisen, können Sie durch Setzen dieses Parameters auf '1' einen Dialog aktivieren der es Ihnen erlaubt den Editor dazu zu zwingen, die Forward-/Backannotation durchzuführen, selbst wenn der ERC die Dateien als inkonsistent erkannt hat. BEACHTEN SIE BITTE, DASS SIE DIES AUF EIGENES RISIKO MACHEN - sollten die Dateien danach zerstört werden, kann womöglich niemand mehr sie wiederherstellen. Schließlich hat der ERC ja gemeldet, dass die Dateien inkonsistent sind!
    Interface.MouseButtonReleaseTimeout
    Die Zeit (in Millisekunden) innerhalb der das Loslassen einer Maustaste, welches dem Drücken der Maustaste auf einem Button (zum Beispiel in einer Toolbar) folgt, die Funktion des Buttons auslöst, selbst wenn das Loslassen der Maustaste ausserhalb der Fläche des Buttons erfolgte. Standardwert ist 500, der Wert 0 schaltet diese Funktion ab. Hat dieser Parameter beim Programmstart den Wert 0, so wirken sich etwaige Änderungen erst nach einem erneuten Programmstart aus.
    Interface.PreferredUnit
    Bei der Anzeige numerischer Werte in Dialog-Eingabefeldern werden die Einheiten automatisch so ermittelt, dass sich die kleinste Anzahl von Nachkommastellen ergibt. Dies kann beeinflusst werden durch Setzen dieses Parameters auf '0' für automatische Wahl der Einheiten (default), '1' für zöllige Einheiten, '2' für metrische Einheiten.
    Interface.UseCtrlForPanning
    Das Verschieben des Zeichnungsauschnittes erfolgt durch Click&Drag mit der mittleren Maustaste (nicht mehr durch Drücken der Ctrl-Taste wie in älteren Versionen). Falls Sie die alte Verhaltensweise wiederhaben wollen, können Sie dies erreichen, indem Sie diesen Parameter auf '1' setzen. Beachten Sie aber bitte, dass die Ctrl-Taste jetzt für spezielle Funktionen einiger Befehle benutzt wird (zum Beispiel zum Selektieren von Objekten an ihrem Aufhängepunkt bei MOVE), so dass Sie, bei Benutzung dieser speziellen Funktionen, dann unter Umständen das Zeichenfenster unbeabsichtigt verschieben können.
    Interface.VectorFont
    Texte in Zeichnungen werden immer im EAGLE-eigenen Vektor-Font dargestellt, unabhängig welche Schriftart für einen Text ursprünglich gewählt wurde und unabhängig von der Einstellung durch SET VECTOR_FONT OFF|ON in der aktuellen Zeichnung. Siehe TEXT-Befehl.
    Option.AutoLoadMatchingDrawingFile
    Falls Sie ein Board- und Schaltplaneditor-Fenster offen haben und in einem dieser Fenster ein anderes Board (bzw. einen anderen Schaltplan) laden, und wenn es für diese andere Zeichnung einen zugehörigen Schaltplan (bzw. ein zugehöriges Board) gibt, so fragt EAGLE, ob diese andere Zeichnung ebenfalls geladen werden soll. Indem Sie diesen Parameter auf '1' setzen, kann diese Frage unterdrückt werden, und EAGLE lädt die andere Datei dann immer automatisch mit.
    Option.Codec
    Gezieltes Setzen eines Codecs (z.B. beim Schreiben mit ULP output()). Gültige Werte sind: "System", "UTF-8" und "ISO 8859-1". Alle anderen Werte führen zur Verwendung der System-Einstellung.
    Option.DrawUnprocessedPolygonEdgesContinuous
    Falls Ihnen die Art, wie die Kanten von nicht berechneten Polygonen dargestellt werden (als gepunktete Linien), nicht zusagt, so können Sie diesen Parameter auf '1' setzen. Die Kanten von nicht berechneten Polygonen werden dann wieder als durchgezogene Linien dargestellt, wie es vor Version 5 der Fall war (allerdings nicht hell).
    Option.LayerSequence
    Die internen Layer werden in der Reihenfolge dargestellt, die dem tatsächlichen Lagenaufbau entspricht, so dass das Ergebnis auch auf Druckern und PDF- bzw. Postscript-Dateien brauchbar aussieht, wo die Layer nicht transparent sind. Manchmal kann es erforderlich sein, dass benutzerdefinierte Layer vor den internen Layern dargestellt werden müssen, anstatt nach diesen. Mit diesem Parameter kann die Reihenfolge, in der die Layer dargestellt werden, festgelegt werden. Er besteht aus einer Folge von Layer-Nummern bzw. Layer-Bereichen, optional gefolgt von 't' oder 'b'.
    123 stellt Layer 123 dar
    123tstellt Layer 123 dar, wenn die Ausgabe "von oben gesehen" erfolgt (nicht gespiegelt)
    123bstellt Layer 123 dar, wenn die Ausgabe "von unten gesehen" erfolgt (gespiegelt)
    123-140stellt die Layer 123 bis 140 in der angegeben Reihenfolge dar
    140-123stellt die Layer 140 bis 123 in der angegeben Reihenfolge dar
    *fügt die Standard-Sequenz der internen Layer ein
    123b * 123tsorgt dafür, dass Layer 123 immer als erster dargestellt wird
    Beachten Sie, dass jeder Layer nur einmal dargestellt wird, auch wenn er mehrmals aufgeführt ist. Die Standard-Sequenz der internen Layer ist
    48t 49t 19t 47t 20t 46t 23 27 25 59 57 55 53 50 51 21 44t 45t 37 35 31 29 33 39 41 43t 18t 17t 1-16 17b 18b 43b 42 40 34 30 32 36 38 45b 44b 22 52 54 56 58 60 26 28 24 46b 20b 47b 19b 49b 48b 61-99.
    Bei Ansicht von oben, wird die Layer-Sequenz von rechts nach links abgearbeitet, während sie bei Ansicht von unten (gespiegelt) von links nach rechts abgearbeitet wird. Zum Beispiel ist Layer 48 (Document) als 48t und 48b enthalten, damit dieser immer als letzter dargestellt wird. Die Layer 21 (tPlace) und 22 (bPlace) hingegen sind nur jeweils einmal aufgelistet, damit Sie an der richtigen Stelle erscheinen, je nachdem, ob die Ausgabe gespiegelt erfolgt oder nicht.
    Alle nicht explizit in der Layer-Sequenz aufgeführten Layer werden nach der gegebenen Sequenz, in aufsteigender Reihenfolge, dargestellt.
    Option.RatsnestLimit
    Der RATSNEST-Befehl verwendet alle Punkte eines Signals, auch wenn dieses sehr komplex ist (in früheren Versionen blieben Linien-Endpunkte unberücksichtigt, wenn die Gesamtzahl der Anknüpfungspunkte größer als 254 war). Hierfür wird mehr Speicherplatz beim Berechnen des Ratsnest benötigt. Falls dies auf Ihrem System ein Problem darstellen sollte, so können Sie auf die ursprüngliche Methode zurückschalten indem Sie diesen Parameter auf '254' setzen. Der angegebene Wert ist die Anzahl der Anknüpfungspunkte bis zu der Linien- Endpunkte berücksichtigt werden und beschränkt somit den Speicherbedarf (die Berechnung benutzt Speicher bis zum Quadrat des angegebenen Wertes, so dass ein Wert von 1024 den verwendeten Speicher auf 1MB beschränkt). Ein Wert von '0' steht für "keine Begrenzung". Ein Wert von '1' bewirkt, das Luftlinien ausschließlich an Pads, Smds und Vias anknüpfen.
    Option.RepositionMouseCursorAfterContextMenu
    Normalerweise verändert EAGLE die Position des Mauszeigers nicht von sich aus. Es gibt allerdings Benutzer, die möchten, dass der Mauszeiger auf den Punkt zurückpositioniert wird, an dem er war, bevor ein Kontext-Menü im Zeichnungseditor geöffnet wurde. Setzen Sie diesen Parameter auf '1' um diese Funktionalität zu erhalten.
    Option.ShowPartOrigins
    Die Aufhängepunkte von Bauteilen in einem Schaltplan werden durch kleine Kreuze gekennzeichnet. Setzen Sie diesen Parameter auf '0' um dies abzuschalten.
    Option.ShowTextOrigins
    Die Aufhängepunkte von Texten werden durch kleine Kreuze gekennzeichnet. Setzen Sie diesen Parameter auf '0' um dies abzuschalten.
    Option.SignalNamesOnPads
    Ist dieser Parameter auf '1' gesetzt, wird der Signalname auf den Kontakten des Signals in der Farbe des Unrouted-Layers angezeigt. Der Standardwert ist '1'.
    Option.SignalNamesOnTraces
    Ist dieser Parameter auf '1' gesetzt, wird der Signalname entlang der Leiterbahnen in der Farbe des Unrouted-Layers angezeigt. Der Standardwert ist '1'.
    Option.ToggleCtrlForGroupSelectionAndContextMenu
    Da die Kontext-Menü-Funktion über die rechte Maustaste im Konflikt mit der Selektion einer Gruppe, wie sie vor Version 5 erfolgte, steht, wird eine Gruppe jetzt mit Ctrl plus rechte Maustaste selektiert. Falls Sie die bisherige Art der Gruppenselektierung wieder haben wollen, so können Sie diesen Parameter auf '1' setzen. Damit können Gruppen wieder mit der rechten Maustaste allein selektiert werden und Kontext-Menüs werden mit Ctrl plus rechte Maustaste geöffnet.
    Option.UnpopulatedMarkScaling
    Mit diesem Parameter ist es möglich die Größe der Markierung von in einer Bestückungsvariante nicht bestückten Bauteilen zu skalieren. Der Standardwert ist '1.0'.
    Option.ViaLength
    Ist dieser Parameter auf '1' gesetzt, wird die Via-Länge bei jedem Via als Text angezeigt. Der Standardwert ist '0'.
    Sch.Cmd.Add.AlwaysUseDeviceNameAsValue
    Einige Benutzer wollen immer den Device-Namen als Bauteilwert verwenden, selbst wenn das Bauteil einen benutzerdefinierten Wert bräuchte. Wer das will kann diesen Parameter auf '1' setzen.
    Warning.Cam.DrillsAndHolesConcurrent
    Falls Sie die Warnung, dass Drills und Holes im CAM Prozessor gleichzeitig ausgegeben werden sollen, nicht haben wollen, können Sie diesen Parameter auf '0' setzen.
    Warning.PartHasNoUserDefinableValue
    Falls Sie die Warnung bezüglich Bauteilen, die keinen vom Benutzer zu vergebenden Wert haben, nicht haben wollen, können Sie diesen Parameter auf '0' setzen.
    Warning.SupplyPinAutoOverwriteGeneratedNetName
    Manche Benutzer wollen nicht gewarnt werden, wenn ein Supply-Pin den generierten Standardnamen (beginnend mit N$) eines bestehenden Netzsegments überschreibt. Wird dieser Parameter auf '1' gesetzt, so wird diese Warnung abgeschaltet.

    SHOW

    Funktion
    Stellt Objekte hervorgehoben dar.
    Syntax
    SHOW •..
    SHOW name..
    SHOW @ name..
    Maustasten
    Ctrl+Linke invertiert die Hervorhebung des selektierten Objekts.
    Siehe auch
    INFO

    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.

    Quervergleich zwischen Platine und Schaltplan

    Bei aktivierter Forward&Back-Annotation wird ein Objekt, das mit Hilfe des SHOW-Befehls heller dargestellt wird, sowohl im Schaltplan als auch in der Platine heller dargestellt.

    Mehrere Objekte

    Wenn Sie mehrere Objekte mit dem SHOW-Befehl selektieren, wird jedes einzelne hell dargestellt. Sie können mehrere Objekte gleichzeitig hervorheben indem Sie diese jeweils mit gedrückter Ctrl-Taste anklicken. Klicken Sie mit gedrückter Ctrl-Taste auf ein Objekt, das bereits hervorgehoben dargestellt ist, so wird dieses Objekt wieder in den nicht hervorgehobenen Zustand versetzt.

    Werden mehrere Namen in einer Zeile eingegeben, so werden alle entsprechenden Objekte gleichzeitig hell dargestellt.

    Kleine Objekte

    Wird das Zeichen @ in der Kommandozeile angegeben, so wird ein Rechteck um das hervorgehobene Objekt gezeichnet. Dies ist hilfreich bei der Suche nach kleinen Objekten, die durch bloßes Hervorheben nicht leicht zu finden wären. Wird mehr als ein Objekt hervorgehoben, so wird das Rechteck um alle Objekte gezeichnet. Um das Rechteck zu sehen, kann es erforderlich sein, aus der Zeichnung herauszuzoomen (oder WINDOW FIT einzugeben). Soll ein Objekt mit dem Namen @ hervorgehoben werden, so muss der Name in einfache Hochkommas eingeschlossen werden.

    Platzhalter

    Falls der name-Parameter angegeben wurde, so sind die Zeichen '*', '?' und '[]' Platzhalter und haben folgende Bedeutung:

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

    Objekte auf anderen Seiten

    Wird ein namentlich genanntes Objekt nicht auf der aktuellen Schaltplanseite gefunden, so erscheint ein Dialog mit einer Liste aller Seiten, auf denen dieses Objekt gefunden wurde. Wurde das Objekt auf keiner Seite gefunden, so wird als Seitennummer in dieser Liste '-' angezeigt. Beachten Sie bitte, dass dieser Dialog nur dann erscheint, wenn mindestens eines der durch Namen (bzw. Platzhalter) angegebenen Objekte nicht auf der aktuellen Seite gefunden wurde. Wurden alle Objekte auf der aktuellen Seite gefunden, so erscheint kein Dialog (selbst, wenn einige Objekte auch auf anderen Seiten vorkommen). Wenn der Dialog erscheint, dann enthält er alle gefundenen Objekte, auch diejenigen auf der aktuellen Seite.

    Beispiele

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

    SIGNAL

    Funktion
    Signale definieren.
    Syntax
    SIGNAL • •..
    SIGNAL signal_name • •..
    SIGNAL signal_name element_name pad_name..;
    Siehe auch
    AUTO, ROUTE, NAME, CLASS, LINE, RATSNEST, EXPORT

    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.

    Mauseingabe

    Man selektiert mit der Maus der Reihe nach die Anschlüsse, die miteinander verbunden werden sollen. EAGLE stellt die Signale als Luftlinien im Unrouted-Layer dar.

    Gibt man signal_name mit ein, dann erhält das Signal den angegebenen Namen.

    Texteingabe

    Man kann ein Signal aber auch vollständig textuell definieren. Die Eingabe
    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.

    Kurzschluss-Check

    Versucht man, mit SIGNAL zwei Pads zu verbinden, die bereits unterschiedlichen Signalen angehören, dann wird in einem Popup-Menü nachgefragt, ob die beiden Signale verbunden werden sollen und welchen Namen sie erhalten sollen.

    Konturdaten

    Der Signalname _OUTLINES_ gibt dem Polygon besondere Eigenschaften, die man zur Erzeugung von Konturdaten (z. B. zum Fräsen von Prototypen) benötigt. Dieser Name sollte ansonsten nicht verwendet werden.

    SPLINE

    Funktion
    Zeichnen von Splines.
    Syntax
    SPLINE [width] • •..

    Verwenden Sie den Befehl SPLINE, um eine Spline-Kurve der dritten Ordnung im Board zu zeichnen. Splines können derzeit nur im Layer Dimension verwendet werden. Bei der Platzierung einer Spline, definiert man einen Startpunkt, bis zu zwei Kontrollpunkte und einen Endpunkt. Um eine Spline-Definition mit weniger als zwei Kontrollpunkten zu beenden, dupliziert man den letzten Punkt, um anzuzeigen, dass es sich um einen Endpunkt handelt.

    SLICE

    Funktion
    Linien auftrennen.
    Syntax
    SLICE [width] • •
    Siehe auch
    DELETE, RIPUP

    Den SLICE-Befehl verwendet man, um eine oder mehrere Linien in Teile zu "schneiden". Der Befehl kann für Leiterbahnen im Layout aber auch für Netze im Schaltplan verwendet werden. Der Parameter 'width' bestimmt die Größe der Lücke; diese muss aber mindestens die doppelte Breite der Linie (Leiterbahn) betragen. Luftlinien und Polygonlinien werden nicht aufgetrennt.

    SIM

    Funktion
    Spice-Simulation ausführen.
    Syntax
    SIM
    Siehe auch
    EXPORT, INFO, ADDMODEL, MAPTOMODEL, SOURCESETUP, VALUE

    Spice-Simulation

    Grundfunktion

    Der SIM-Befehl wird verwendet um die Spice-Simulation in EAGLE zu starten. Die Bauteile müssen simulationsfähig sein. Dazu wird in EAGLE eine Verwaltete Bibliothek mit dem Namen ngspice-simulation bereitgestellt. Klicken Sie auf das SIM-Icon oder tippen Sie SIM in der EAGLE-Befehlszeile ein. Konfiguration, Netzliste und Plot werden unter den entsprechenden Tabs im Simulations-Dialog angezeigt.

    Unterstützte Simulationen sind unter folgendem Link aufgeführt:
    • Ngspice (Version 26), http://ngspice.sourceforge.net/

    Passive-Sign-Konvention

    Bitte beachten Sie, dass EAGLE die Passive-Sign-Konvention (PSC) verwendet, bei der die Versorgung positiv ist, wenn Strom in den positiven Anschluß des Devices fließt. Das bedeutet, typischerweise haben Lasten eine positive Dissipation (sie verbrauchen Power) und Quellen eine negative (sie liefern Power).

    Simulations-Dialog Tabs

    Sobald der SIM-Befehl aufgerufen wird, erscheint der Simulations-Dialog. Der Dialog hat eine Reihe von Tabs:
    • Konfiguration: Setup, Speichern und Starten einer bestimmten Simulation
    • Netlist: Ansehen und Editieren einer Schaltungsnetzliste und Ausführen einer Simulation mit einer manuell editierten Netzliste
    • Simulator Output: Raw Simulator Ausgabe ansehen
    • Plot: Ansehen und Agieren mit den Daten via Signal-Plotter

    Simulationsfähige Bibliotheksbauteile

    Um den Simulator verwenden zu können, müssen alle Bauteile für die Simulation geeignet sein. Das heisst, es müssen bestimmte Bauteilattribute definiert sein um in EAGLE simulieren zu können. Die Bibliothek mit dem Namen ngspice-simulation, die mit EAGLE geliefert wird, enthält grundlegende simulationsfähige Bauteile.

    Ground
    Ein gültiges Ground-Symbol hat ein Attribut SPICEGROUND mit leerem Value. Es muss ein Gound-Symbol in der Schaltung vorhanden und mit einem Netz (oder Netzen) verbunden sein, damit der Simulator fehlerfrei arbeiten kann.

    Startbedingungen
    Zusatzlich zu den Attributen, die man für simulationsfähige Bauteile definiert, kann man auch die Startbedingungen für Bauteile, wie zum Beispiel die Startspannung für einen Kondesator, festlegen. Die Startbedingungen werden im INFO-Dialog angezeigt.

    Spice-Mapping
    Für jeden Pin eines simulationsfähigen Bauteils muss eine Zuordnung zur Spice-Order im Spice-Modell haben. Diese Eigenschaft weist dem Pin den korrekten Input in einem Spice-Subcircuit, Model-Card oder intrinsischen Modell zu. Nehmen wir zum Beispiel einen Opamp, der 5 Pins hat. Im Bibliothekssymbol für den Operationsverstärker sind fünf Pins definiert und ebenso müssen dementsprechend im Spice-Modell fünf Inputs sein. Jedem Input ist eine Nummer beginnend mit 1 zugeordnet, die auf die entsprechenden Modell-Input-Parametern verweist. Diese spice-kompatible Zuordnung wird erreicht indem man die Befehle MAKESPICE und dann MAPTOMODEL auf ein Part in der Bibliothek im Device-Editor und im Schaltplan-Editor anwendet. Macht man die Zuordnung in der Bibliothek, wird das Spice-Modell in der Bibliothek gespeichert. Unabhängig davon ob das Part bereits in der Bibliothek eine zuordnung hat, kann man jederzeit eine neue Zuordnung im Schaltplan festlegen. Diese wird dann direkt für das Bauteil im Schaltplan gespeichert; die Information aus der Bibliothek ist dann nicht mehr gültig. Es gibt ein Mapping-Interface füe die Befehle ADDMODEL und MAPTOMODEL, die es erlauben Bauteil-Pins den Modell-Pins zuzuordnen.

    Part Attribute: Beim Zuordnen der Bauteile im Schaltplan werden folgende Attribute verwendet:
    • SPICEMODEL: Leer oder der Name eines gültigen Spice-Modelle ohne die Erweiterung .mdl
    • SPICEPREFIX: Das Präfix bestehend aus einem Zeichen, das für diesen Device-Typ verwendet wird. (z.B: R, L, C, X, .. )
    • SPICEINITCOND: Startbedingungen für ein Spice-Part (Spannung für Kondensator, Strom für Induktivität)
    • SPICEEXTRA: Das können zusätzliche Werte in der Netzlist nach dem Modellnamen sein, die typischerweise physikalische Eigenschaften (wie L=10 W=20) beschreiben.
    • _EXTERNAL_: Optionales Attribut für Bauteile, die simulationskompatibel sein sollen, aber kein Package besitzen. Der Attributwert sollte leer sein.

    Spice-Modell Verwendung

    Manche Bauteile (wie Tranistoren, Dioden, und Schaltkreise) benötigen per Definition Spice-Modelle und Spice-Modell-Cards. Um einem Bauteil ein Modell zuzuordnen, braucht man zwei Schritte:
    Modelle verwenden
    1. Verwenden Sie den MAPTOMODEL-Befehl um die geeigneten Attribute dem Bauteil zuzuordnen und
    2. speichern Sie die Modelldatei entweder im globalen /models/-Verzeichnis oder in dem Verzeichnis in dem sich der Schaltplan befindet.
    Bitte beachten Sie folgende Suchreihenfolge:
    1. Die Modelldatei wird zuerst dem Verzeichnis in dem sich der Schaltplan befindet gesucht.
    2. Falls dort nicht vorhanden,wird im globalen /models/-Verzeichnis gesucht.
    3. Falls dort nicht gefunden, wird das Bauteil selbst auf ein auf Bibliotheksebene hinterlegtes Spice-Modell überprüft.
    Wird das Modell an keiner der drei oben genannten Stellen gefunden, wird es nicht in die Netzliste übernommen und die Simulation schlägt fehl. Das Ergebnis der Simulation meldet, dass das Modell nicht gefunden wurden.

    Netzlisten

    EAGLE kann jederzeit spice-kompatible Netzlisten mit dem Befehl EXPORT SPICENETLIST erstellen. Die Netzlisten werden mit der Dateierweiterung *.sch.net im Schaltplan-Verzeichnis gespeichert. Dateien mit der Erweiterung *.sch.final.net sind dieselben Netzlisten, die die letzte Simulationskonfiguration enthalten. Diese Dateien werden an den Simulator geschickt. Die Dateien mit der Erweiterung *.sim enthalten dann das Simulationsergebnis im Raw-Format.

    Die Dateien *.sim.proc.log enthalten die Antworten vom System, wenn man den Simulator startet. Sie können bei Problemen in der Konfiguration oder des Systems hilfreich sein.

    Netlist Features
    Die Netzliste wird von EAGLE erzeugt und für die Simulation verwendet. Es ist jedoch möglich die Netzlist manuell zu verändern und auf dieser veränderten Grundlage eine Simulation zu starten. Verändern Sie dazu die Netzliste direkt im Netlist-Tab und wenn Sie dann Simulieren aus dem Netlist-Tab klicken, startet die Simulation unter Verwendung der editierten Netzliste.

    Plotten

    Simulationen, die ein Ergebnis haben, können geplottet werden (AC, DC, TRAN). Das Plot-Tab wird automatisch geöffnet und die Daten geplottet. Wenn die Schaltung keine Probes enthält, werden Spannungen an allen benannten Knoten und Ströme an allen Quellen angezeigt. Sind Probes im Design vorhanden, werden nur diese referenzierten Signale gezeigt.

    Mit der Maus kann man durch Klick&Drag in einen bestimmten Bildbereich hineinzoomen. Rauszoomen erfolgt mit Doppelklick auf den Plot. Mit der Mausbewegung werden alle Signale verfolgt und die entsprechenden Werte in der Plot-Legende angezeigt.

    Source-Setup

    Bei simulationsgeeigneten Bauteilen, die das Präfix V oder I für spice-unabhängige Sourcen haben, bietet der Befehl SOURCESETUP eine Benutzeroberfläche um DC-, AC- und Transienten-Funktions- Parameter für ein Source-Bauteil einzustellen. Es werden Sinus-, Puls- und Exponentialfunktionen unterstützt.

    Unterstützte Funktionen

    • Verwenden von Control-Statements und Scripting innerhalb Netzlisten wird nicht unterstützt.
    • Simulations-Typen: AC, DC, TRAN und OP
    • Verwendung von gültigen Subcircuit-Modellen und Model-Cards. Subcircuits dürfen Modelle und andere Subcircuits enthalten.
    • Netlzlisten-Prüfung vor der Simulation; ungültige Zeilen in der Netzliste werden dem Anwender gemeldet.
    • Simulation-Ergebnisse werden geplottet und in Raw-Text-Format ausgegeben.
    • Mapping in Bibliotheken wird unterstützt. Das Modell wird in der Bibliothek im Bauteil für einfache Weiterverwendung gespeichert.
    • Mapping von Bauteilen im Schaltplan wird unterstützt und ersetzt dann das bisherige Mapping aus der Bibliothek.
    • Vordefinierte spice-kompatible Bauteile werden in der Bibliothek ngspice-simulation bereitgestellt.
    • Simulation-Einstellungen werden automatisch geladen/gespeichert von/in einer .simcfg-Datei, die sich im selben Verzeichnis wie der Schaltplan befindet.
    • Spice-Modell-Dateien werden unterstützt und sollten im selben Verzeichnis wie der Schaltplan in dem sie verwendet werden oder im /models/ Programmverzeichnis vorhanden sein, um fehlerfrei verwendet werden zu können.

    SIMOPTOGGLE

    Funktion
    Schaltet O.P. Simulationsergebnisse ein oder aus
    Syntax
    SIMOPTOGGLE
    See also
    SIM

    REPOSITION

    Funktion
    Loslösen von Text-Variablen und Attribute von Bauteilen.
    Syntax
    REPOSITION •..
    REPOSITION name ..
    SMASH •..
    SMASH name ..
    Maustasten
    Ctrl+Rechte wirkt auf die Gruppe.
    Shift+Linke macht die Loslösung der Texte wieder rückgängig (unsmash).
    Ctrl+Shift+Rechte macht die Loslösung der Texte für die Gruppe wieder rückgängig.
    Siehe auch
    NAME, VALUE, TEXT, ATTRIBUTE

    Den REPOSITION-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 (in derselben Weise wie beim früheren SMASH-Befehl). Der Text kann dann an einer fixen Position (oben links, oben, oben rechts, links, zentral, rechts, unten links, unten, unten rechts) oder an einer neuen geeigneteren Stelle mit MOVE platziert werden.

    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 REPOSITION-Befehl kann man diese Texte behandeln wie alle anderen Texte. Allerdings lässt sich der aktuelle Inhalt nicht verä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 REPOSITION-Befehl) angeklickt wird.

    SMD

    Funktion
    Plazieren von Smds in Packages.
    Syntax
    SMD [x_width y_width] [-roundness] [orientation] [flags] ['name'] •..
    Maustasten
    Mittlere wählt den Layer.
    Rechte dreht das SMD.
    Shift+Rechte kehrt die Richtung der Drehung um.
    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 200 mm (ca. 7.7840 Zoll) 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.

    Roundness

    Der Wert für roundness kann ganzzahlig - mit negativen Vorzeichen, um es vom width-Parameter zu unterscheiden - zwischen 0 und 100 angegeben werden. Der Wert 0 erzeugt rechteckige SMDs, während der Wert 100 die Ecken der SMDs vollständig rundet. Der Befehl
    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.

    Beliebige Pad-Formen

    Falls die standardmäßigen SMD Pad-Formen für ein bestimmtes Bauteil nicht ausreichen, können Sie beliebige SMD Pad-Formen dadurch erzeugen, dass Sie ein Polygon um ein SMD Pad herum zeichnen, oder eine Leiterbahn zeichnen, die mit einem Ende an das SMD Pad angeschlossen ist.

    Hierbei gelten folgende Bedingungen:

    • Ein Polygon gilt als mit einem SMD Pad im selben Layer verbunden, wenn der Aufhängepunkt des Pads innerhalb der durch die Mittellinien der Polygon-Linien definierten Fläche liegt.
    • Eine Leiterbahn gilt als mit einem SMD Pad im selben Layer verbunden, wenn einer ihrer Endpunkte am Aufhängepunkt des Pads liegt. Etwaige mit dem anderen Ende einer solchen Leiterbahn verbundene weitere Leiterbahnen sind ebenfalls elektrisch mit dem Pad verbunden.
    • Pro Pad wird nur ein Polygon berücksichtigt. Ist mehr als ein Polygon an einem Pad angeschlossen, so erzeugen diese DRC-Fehler.
    • Mit einem Pad verbundene Polygone werden von Autorouter ignoriert, wenn er das betreffende Signal routet. Für andere Signale gelten sie als Hindernisse.
    • Mit einem Pad verbundene Leiterbahnen werden wie alle anderen Leiterbahnen behandelt, mit dem Unterschied, dass sie nicht gesplittet werden können.
    • Lötstop- und Lotpasten-Masken werden nur für das Pad selber erzeugt. Werden darüber hinaus weitere Lötstop- oder Lotpasten-Masken benötigt, so müssen diese explizit in die entsprechenden Layer gezeichnet werden.
    • Bei der Generierung von Thermal-Stegen wird die zusätzliche Polygon-Form mit berücksichtigt.
    • Ist ein Polygon oder eine Leiterbahn mit mehr als einem Pad innerhalb eines Bauteils verbunden, so gilt nur eines der Pads als elektrisch mit dem Polygon bzw. der Leiterbahn verbunden. Die anderen Pads erzeugen DRC-Fehler, es sei denn, sie sind alle innerhalb eines Devices am selben Pin angeschlossen.
    • Falls ein C-förmiges Polygon, welches mit einem Pad verbunden ist, dazu führt, dass ein Signal-Polygon im Board ein "Orphan" erhält, welches innerhalb der C-Fläche liegt, so verschwindet dieses Orphan, unabhängig davon ob das betreffende Signal-Polygon seinen Orphans-Parameter ein- oder ausgeschaltet hat.

    Namen

    Smd-Namen werden vom Programm automatisch erzeugt und können mit dem NAME-Befehl geändert werden. Der Name kann als Parameter auch im SMD-Befehl mit angegeben werden (muss in Hochkommas eingeschlossen sein).

    Flags

    Folgende flags können dazu benutzt werden, das Erscheinungsbild eines Smds zu beeinflussen:

    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.

    Einzelne Smds

    Einzelne Smds in Platinen sind als Package zu realisieren und dann in die Platine zu holen.

    SMDARRAY

    Funktion
    Erzeugt SMD-Arrays.
    Syntax
    SMDARRAY [sides base start count dx dy unit drawrect includename includevalue deleteobjs]
    Siehe auch SMD

    Der Befehl SMDARRAY erlaubt es ein Array von SMDs im Footprint-Editor der Bibliothek anzulegen. Wird der Befehl über das Icon in der Parameter-Toolbar des SMD-Befehls gestartet, öffnet sich ein Dialog, in dem man die Optionen für die Seite, den Basisnamen, Start-Index, Anzahl der SMDs usw. vor dem Anlegen des Arrays festlegt. Wird der Befehl über die Kommandozeile gestartet und dabei Argumente angegeben, sind folgende Optionen verfügbar.

    Optionen

    In der Kommandozeile müssen alle Optionen angegeben werden:
    SIDES Kann L, R, LR, T, B, oder TB sein. Zeigt an, auf welcher Seite des Rechtecks die SDMDs gezeichnet werden sollen. Wobei L=links, R=rechts, T=Top (oben), B=Bottom (unten) ist.
    BASE Das ist der Basisname, der für das Benennen der SMDs verwendet wird. Das erste SMD wird dementsprechend <base><start> und die nachfolgenden SMDs mit einem aufsteigenden numerischen Index benannt (z.B. ADDR1, ADDR2 ... ADDRn). Das letzte platzierte SMD erhält den entsprechenden Namen <base><start+count-1>.
    START Das ist der Start-Index für die Benennung der SMDs. Der Name des ersten SMDs ist <base><start>.
    COUNT Die Anzahl der SMDs, die platziert werden sollen.
    DX Der Abstand zwischen den SMDs in x-Richtung.
    DY Der Abstand zwischen den SMDs in y-Richtung.
    UNIT Gültige Werte sind: MIC (für Micron), MM (Millimeter), MIL (mil = 0.001 inch), INCH.
    DRAWRECT ON oder OFF. Bestimmt, ob beim Platzieren auch ein Rechteck im Layer tPlace gezeichnet werden soll.
    INCLUDENAME ON oder OFF. Bestimmt, ob ein Textobjekt >NAME platziert werden soll.
    INCLUDEVALUE ON oder OFF. Bestimmt, ob ein Textobjekt >VALUE platziert werden soll.
    DELETEOBJS ON oder OFF. Bestimmt, ob vor dem Anlegen des Arrays SMDs, Labels und Wire-Objekte gelöscht werden sollen.

    SOURCESETUP

    Funktion
    Definieren der DC-, AC- und Transient-Parameter für ein simulationsgeeignetes Source-Part.
    Syntax
    SOURCESETUP name
    See also
    ADDMODEL, SIM, DSOURCESETUP

    Dieser Befehl wird verwendet um den Wert für ein spice-kompatibles Part zu setzen (gültig for Parts mit spice Präfix V oder I). DC-, AC- und Transient-Funktion (Sinus, Exponential und Puls) sind im Dialog verfügbar. Der Anwender kann den Wert immer direkt für gültige Source-Values setzen. Ist ein Bauteil noch nicht spice-kompatibel, wird zuerst MAKESPICE gestartet um das Bauteil zu konvertieren bevor die Einstellungen getroffen werden können.

    DSOURCESETUP

    Function
    Used to setup a digital stimulation source for a simulation-compatible digital source part.
    Syntax
    DSOURCESETUP name
    See also
    SIM, See also ADDMODEL, See also SOURCESETUP

    Typical Usage

    Used to setup a "digital source" part to provide input signal stimuli for digital circuit simulations. Data can be entered in a table manually, or loaded from a .csv file.

    EAGLE provides 1, 4, and 8-output digital source parts ready to use in the ngspice-digital library for your convenience and the DSOURCESETUP command is used to configure it.

    After you place a digital source part, connect all the part pins to nets, then run DSOURCESETUP and click on the part, (or alternatively, right-click on the part and choose Digital Source Setup), to configure it. You will be presented with a table-based interface, with one column for time, and one column for each output of the device. Data is entered into the table so that each row has a time value (i.e. 0.010s, or 10m, or 10ms, or 10e-3) then a series of digital values (0 or 1) for each output of the device. The table below gives an example of the data that could be entered for a 4-output digital source.

    TIME       OUT1      OUT2      OUT3      OUT4
     0          0         0         0         0
     10ms       1         0         1         0
     15ms       0         1         1         1
    

    Advanced Usage

    The digital values can be entered simply as 0 or 1 or U (for unknown state), or also optionally ending with a signal strength/type indicator suffix character which is one of s, r, z, or u (these stand for strong, resistive, hi-impedance, and undetermined). The full list of possible values is:
    0s, 1s, Us, 0r, 1r, Ur, 0z, 1z, Uz, 0u, 1u, Uu
    .

    If you want convert an arbitrary device to work as a digital source, you need to map it to a subcircuit SPICE model that contains the d_source digital model inside of it. The DRIVERD1, DRIVERD4, and DRIVERD8 models are provided in the example models directory for you and provide a template for how to use the d_source ngspice model. The model can be adjusted to include any number of outputs. Consult the ngspice manual for more detail on the d_source model.

    Consult the ngspice manual included in the EAGLE install directory for more details on digital source parts.

    SPLIT

    Funktion
    Knicke in Linien einfügen.
    Syntax
    SPLIT • [curve | @radius] •..
    Maustasten
    Rechte ändert den Knickwinkel (siehe SET Wire_Bend).
    Shift+Rechte kehrt die Richtung des Weiterschaltens des Knickwinkels um.
    Ctrl+Rechte schaltet zwischen korrespondierenden Knickwinkeln hin und her.
    Ctrl+Linke beim Absetzen eines Linien-Endpunktes definiert den Kreisbogen-Radius.
    Siehe auch MITER, MOVE, OPTIMIZE, SET

    Den SPLIT-Befehl benötigt man, wenn nachträglich in Linien oder Polygonen noch eine Abknickung erforderlich ist. SPLIT teilt Linien 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 LINE-Befehl).

    Nach dem SPLIT-Befehl werden die betroffenen Linien-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 Linien erhalten. Sie bleiben auch dann erhalten, wenn man im SPLIT-Befehl dieselbe Stelle zweimal mit der Maus anklickt.

    Leitung verjüngen

    Dazu selektiert man den SPLIT-Befehl, markiert den zu verjüngenden Abschnitt mit zwei Mausklicks, gibt den Befehl
    CHANGE WIDTH breite
    
    ein und klickt mit der Maus das gewünschte Segment an.

    FUSIONSYNC

    Funktion
    Board und Fusion PCB synchronisieren.
    Syntax
    FUSIONSYNC

    Der SYNCFUSION-Befehl wird verwendet um ein Board mit einem Fusion PCB-Modell zu synchronisieren.

    Der Anwender kann damit einfach eine 3D-Darstellung eines Layouts erstellen. Wenn ein Board in EAGLE editiert wird, kann man mit diesem Befehl die Änderungen ins Fusion-PCB-Modell schieben. Wird ein Board in Fusion editiert, zieht man das veränderte PCB-Design in EAGLE. Im Board wird ein Link zum PCB-Modell in Fusion gespeichert. Ein Board kann auch zu einem anderen Fusion PCB-Modell gelinkt werden.

    FUSIONTEAM

    Funktion
    Publiziert Schaltplan- und Boarddateien und/oder Fertigungsdaten in Fusion Team.
    Syntax
    FUSIONTEAM
    Eine Schaltplan- und/oder Boarddatei kann auf Fusion Team hochgeladen werden. Der Befehl wird im Layout-Editor über das Tab Fusion Team oder durch Tippen des Befehls in der Kommandozeile aktiviert. Wählt man eine CAM-Jobdatei, werden die Daten automatisch erzeugt und als zip-Archiv auf Fusion Team publiziert. Das Fusion Team Tab kann zusammen mit dem Tab Fusion 360 über das Menü Optionen/Benutzeroberfläche aktiviert bzw. deaktiviert werden.

    TECHNOLOGY

    Funktion
    Definiert eventuell vorhandene Technologien für ein Device.
    Syntax
    TECHNOLOGY name ..;
    TECHNOLOGY -name ..;
    TECHNOLOGY -* ..;
    Siehe auch
    PACKAGE, ATTRIBUTE

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

    Beispiel

    In einem Device mit dem Namen "74*00" löscht der Befehl
    TECHNOLOGY -* '' L LS S HCT;
    
    zunächst alle bisherigen Technologien und erzeugt anschließend die folgenden Technologie-Varianten:
    7400
    74L00
    74LS00
    74S00
    74HCT00
    

    TEXT

    Funktion
    Plazieren von Text.
    Syntax
    TEXT beliebige_zeichen [orientation] •..
    TEXT 'beliebige_zeichen' [orientation] •..
    Maustasten
    Mittlere wählt den Layer.
    Rechte dreht den Text.
    Shift+Rechte kehrt die Richtung der Drehung um.
    Siehe auch
    CHANGE, MOVE, MIRROR, ROTATE, ATTRIBUTE

    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.

    Schreibrichtung

    Mit der rechten Maustaste dreht man den Text.

    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.

    Text auf Lötseite

    Texte in den Layern Bottom und bPlace werden automatisch gespiegelt.

    Mehrzeilige Texte

    Texte dürfen Zeilenumbrüche enthalten. Im Textdialog können sie mit Shift-Enter eingegeben werden, in der Kommandozeile muß "\n" verwendet werden.

    Sonderzeichen

    Sollen in einem Text mehrere aufeinanderfolgende Leerzeichen oder ein Strichpunkt enthalten sein, dann setzt man den ganzen String in Hochkommas. Sollen Hochkommas gedruckt werden, dann ist jedes einzelne in Hochkommas einzuschließen.
    Soll der Text Backslashes ('\') enthalten, dann muß jeder mit einem weiteren Backslash maskiert werden (z.B. TEXT 'abc\\\\def' führt zu abc\\def).

    Schlüsselwörter

    Ist der TEXT-Befehl aktiv und enthält der einzugebende Text Wörter, die EAGLE für Befehle oder Orientation-Schlüsselwörter hält (z. B. und für UNDO), dann sind diese Wörter oder der gesamte Text in Hochkommas einzuschließen.

    Texthöhe

    Die Zeichengröße und die Strichstärke ändert man mit den Befehlen:
    CHANGE SIZE text_size •..
    CHANGE RATIO ratio •..
    CHANGE LINEDISTANCE value •..
    
    Maximale Texthöhe: ca. 2 Zoll.
    Maximale Strichstärke: 200 mm (ca. 7.7840 Zoll)
    Parameter "ratio": 0...31 (% der Texthöhe)
    Zeilenabstand: 0...250 (% der Texthöhe).

    Schriftart

    Texte können in drei Schriftarten verwendet werden:
    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, unabhängig von den Einstellungen der einzelnen Texte und für jede Zeichnung. Diese Einstellung ist dann sinnvoll, wenn vom System die anderen Schriftarten nicht korrekt angezeigt werden.
    Mit SET Interface.VectorFont 0|1 können Sie diese Einstellung ändern.

    Beim Anlegen eines neuen Boards oder Schaltplans wird die aktuelle Einstellung in der Option "In diese Zeichnung einprägen" 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.
    Mit SET VECTOR_FONT OFF|ON können Sie diese Einstellung für ein bestehendes Layout oder einen Schaltplan ä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.

    Text-Ausrichtung

    Die Text-Ausrichtung gibt an, an welcher Stelle des Textes sich der Aufhängepunkt befinden soll. Es gibt neun verschiedene mögliche Ausrichtungen, die aus Kombinationen der Schlüsselworte left, bottom, center, right und top bestehen. Diese Schlüsselworte können in beliebiger Reihenfolge angegeben werden, wobei aber nur das jeweils letzte von left/right bzw. top/bottom für die tatsächliche Ausrichtung maßgebend ist. Das Schlüsselwort center wirkt nur für jene Richtungen, für die kein anderes Schlüsselwort angegeben wurde. Der Standardwert ist left und bottom.

    CHANGE ALIGN TOP CENTER; TEXT 'ABC' • zeichnet den Text ABC mit dem Aufhängepunkt oben in der Mitte

    Zeichensatz

    Eine korrekte Darstellung wird nur für die Zeichen im ASCII-Code unter 128 garantiert. Alle anderen Zeichen darüber können systemabhängig zu unterschiedlichen Darstellungen in den unterschiedlichen Schriftarten führen.

    Spezielle Platzhalter-Texte

    Spezielle Texte in einer Symbol- oder Package-Zeichnung, die mit '>' gekennzeichnet sind, werden durch konkreten Werten im Schaltplan bzw. Board ersetzt:

    >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)
    >ASSEMBLY_VARIANT Name der aktuellen Bestückungsvariante
    >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)
    >MODULE Modul-Name (verfügbar auf Modul-Seiten, sonst leer) 3)
    >SHEET_HEADLINE Seitenüberschrift 3)
    >SHEETNR_TOTAL Seitennummer eines Schaltplans (inkl. Modulseiten) 3)
    >SHEETS_TOTAL Gesamtzahl der Seiten von Schaltplan und Modulen 3)
    >SHEET_TOTAL entspricht ">SHEETNR_TOTAL/>SHEETS_TOTAL" 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.

    Attribute

    Soll in einer Symbol- oder Package-Zeichnung ein Attribut des konkreten Bauteils dargestellt werden, so kann hierfür ein Text mit dem Namen des Attributs und vorangestelltem '>' benutzt werden. Standardmäßig wird nur der Wert des gegebenen Attributs dargestellt. Folgt auf den Namen des Attributs eines der Zeichen '=', '~' oder '!', so geschieht die Darstellung wie folgt:

    >ABC 123
    >ABC=ABC = 123
    >ABC~ABC
    >ABC!nothing
    Beachten Sie bitte, dass es für jeden Attribut-Namen nur einen solchen Text pro Symbol bzw. Package geben sollte. Werden mehrere solcher Texte in einem Symbol bzw. Package verwendet, die alle den gleichen Attribut-Namen referenzieren, so wird nur einer davon angezeigt, wenn das Bauteil, welches dieses Symbol bzw. Package verwendet, gesmasht wird.

    Überstrichener Text

    Text kann überstrichen werden, was zum Beispiel sinnvoll ist für die Namen von negierten Signalen ("active low", siehe auch NET, BUS und PIN). Hierfür muss dem Text ein Ausrufezeichen ('!') vorangestellt werden, wie in
      !RESET
    
    was als
      _____
      RESET
    
    dargestellt 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/!W
    
    was als
      ___
      RST/NMI
        _
      R/W
    
    dargestellt 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 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).

    EXPORTSTEP

    Funktion
    Exportiert das Layout in eine STEP-Datei.
    Syntax
    EXPORTSTEP
    Der Befehl EXPORTSTEP kann über die Kommandozeile oder über das Menü Export/STEP im Layout-Editor-Fenster gestartet werden.

    EAGLE nutzt für die Konvertierung den Cloud-Service von Fusion Sync. Sobald das STEP-Modell vollständig konvertiert ist, wird die Datei im Home-Tab des Control Panels im Abschnitt Recent Generated 3D Files angezeigt. Mit einem Mausklick auf den Eintrag öffnet sich der Datei-Manager und zeigt die entsprechende Datei.

    UNDO

    Funktion
    Vorhergehende Befehle zurücknehmen.
    Syntax
    UNDO
    UNDO LIST
    Siehe auch
    REDO, SET, Forward&Back-Annotation

    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- oder REMOVE-Befehl. Diese Befehle löschen die Vorgeschichte.

    Die UNDO-Funktion benötigt Platz im Arbeitsspeicher 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.

    UNDO-Puffer Dialog

    Die Option LIST im UNDO-Befehl öffnet einen Dialog, der den gesamten Inhalt des UNDO-Puffers darstellt. Sie können sich in der Liste der Undo-/Redo-Schritte bewegen indem Sie den Listen-Trenner mit der Maus verschieben, oder direkt auf einen Schritt klicken, zu dem Sie gehen wollen. Liegen mehrere Schritte zwischen der aktuellen Position des Listen-Trenners und dem angeklickten Listeneintrag, so werden alle dazwischenliegenden Schritte in der entsprechenden Reihenfolge ausgeführt. In der Liste nach oben zu gehen bewirkt UNDO, nach unten REDO.
    Das Icon bei jedem Listeneintrag gibt an, in welcher Zeichnung der entsprechende Befehl ausgeführt worden ist.

    Wenn Sie diesen Dialog mit "OK" bestätigen, so verbleibt die Zeichnung in dem aus der Liste gewählten Zustand. Brechen Sie den Dialog ab, so wird der Zustand wiederhergestellt, den die Zeichnung vor dem Öffnen dieses Dialogs hatte.

    VORSICHT: dies ist ein sehr mächtiges Werkzeug! Wenn Sie in der UNDO-Liste sehr weit zurückgehen (was mit einem einfachen Mausklick möglich ist) und dann irgend einen neuen Befehl eingeben, so wird der UNDO-Puffer an dieser Stelle abgeschnitten, und es führt kein Weg zurück! Benutzen Sie es also mit entsprechender Vorsicht!

    UNGROUP

    Function
    Removes an object from already created persistent group.
    Syntax
    UNGROUP • ..
    UNGROUP name ..
    Mouse keys
    Ctrl/Cmd+Shift+G ungroups the selected groups.
    See also
    NEWGROUP, EDITGROUP, GROUPS VIEW

    The UNGROUP command removes the group from the drawing. The objects in the group are still in the drawing but the group memberships are removed. This command can only be performed on persistent group objects.
    The keyboard shortcut can be overridden in default-assign.scr. Make sure that line "SCRIPT default-assign.scr" in "Documents/EAGLE/scripts/eagle.scr" is uncommented to properly assign shortcut keys.

    UPDATE

    Funktion
    Aktualisiert Bibliotheks-Elemente.
    Syntax
    UPDATE
    UPDATE;
    UPDATE library_name..;
    UPDATE package_name@library_name..;
    UPDATE +@ | -@ [library_name..];
    UPDATE old_library_name = new_library_name;
    Siehe auch
    ADD, REPLACE

    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.

    Wenn eine oder mehrere Bibliotheken angegeben werden, werden nur Bauteile aus diesen überprüft. Der Bibliotheksname kann entweder ein einfacher Name (wie "ttl" oder "ttl.lbr") oder eine vollständige Pfadangabe (wie "/home/mydir/myproject/ttl.lbr" oder "../lbr/ttl"), oder der URN einer heruntergeladenen Verwaltete Bibliothek (z.B. "urn:adsk.eagle:library:42") sein.

    Falls ein library_name Leerzeichen enthält, so muss er in einfache Hochkommas eingeschlossen werden.

    Update im Layout oder Schaltplan

    Wird der Befehl ohne Parameter mit einem ';' abgeschlossen, werden alle Bauteile überprüft.

    Ist der erste Parameter '+@', wird jedem genannten lokalen Bibliotheksnamen (oder allen lokalen Bibliotheksnamen, wenn kein Name angegeben wird) ein '@' gefolgt von einer Nummer vorangestellt. 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 auf ein '@'-Zeichen gefolgt von einer Nummer enden, werden genauso wie die Namen der Verwaltete Bibliotheken 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.

    Eine in einem Schaltplan oder Layout hinterlegte Bibliothek wird anhand ihres Namens (z.B. ttl), bei einer Verwaltete Bibliothek anhand des URN (wie "urn:adsk.eagle:library:42") identifiziert. Beim Abgleich welche Bibliothek durch welche aktualisiert weden soll, wird als erstes der URN der beiden (Verwaltete) Bibliotheken verglichen bzw. der Bibliotheksname, falls bei beiden kein URN vorhanden ist (lokale Bibliotheken). Falls es dabei zu keiner Übereinstimmung kommt, vegleicht UPDATE die Namen der beiden Bibliotheken, wenn nur eine Bibliothek einen URN hat. (In keinem Fall werden Verwaltete Bibliotheken mit unterschiedlichem URNs zum Update verwendet, auch wenn die Namen übereinstimmen.) Werden mehrere Übereinstimmungen gefunden, wird ein Dialog gezeigt aus dem man die zu verwendende Bibliothek auswählen kann. Beachten Sie bitte, dass die Namen der Bibliotheken unabhängig von Groß- und Kleinschreibung betrachtet werden. Auch der Bibliothekspfad der lokalen Bibliotheken wird nicht beachtet (außer es wurde in der Kommandozeile explizit ein Pfad angegeben). Es spielt keine Rolle ob die entsprechende Bibliothek zur Zeit "in use" ist; Verwaltete Bibliothekwn werden jedoch nur betrachtet, wenn sie bereits heruntergeladen wurden. Wird eine Bibliothek nicht gefunden, wird für diese auch kein Update durchgeführt. Ein Fehler wird nur gemeldet, wenn die Bibliothek(en) über die Kommandozeile angegeben wurden. Es gibt keine Fehlermeldung bei fehlenden Bibliotheken, wenn alle in Schaltplan und Board vorhandenen Bibliotheken akutalisiert werden sollen.

    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 oder ein URN 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!

    Update in einer Bibliothek

    Beim Update in einer Bibliothek werden alle in dieser befindlichen Packages durch die entsprechenden Versionen aus den angegebenen Bibliotheken ersetzt.

    Durch die Angabe des Package-Namens (package_name@library_name) kann dafür gesorgt werden, dass nur ein ganz bestimmtes Package ersetzt wird.

    USE

    Funktion
    Bibliothek zur Benutzung markieren.
    Syntax
    USE
    USE -*;
    USE library_name..;
    USE -library_name..;
    Siehe auch
    ADD, REPLACE

    Der USE-Befehl markiert eine Bibliothek so, dass sie für die Befehle ADD oder REPLACE verfügbar ist.

    Wenn man den USE-Befehl ohne Angabe von Parametern aktiviert, öffnet sich ein Dialog, der es erlaubt die Bibliotheken zu verwalten: Bibliotheken laden oder entfernen und Verwaltete Bibliotheken aktualisieren.

    Der spezielle Parameter -* bewirkt, dass alle bisher markierten Bibliotheken aufgegeben werden. Mit -library_name wird die Bibliothek library_name aufgegeben.

    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.

    Auswählen der Bibliotheken über das Control Panel

    Wenn eine Bibliothek, die Sie benutzen wollen im Bibliotheks-Editor verändert und noch nicht gespeichert wurde, werden Sie gefragt, ob die Datei jetzt gespeichert werden soll oder nicht. Beantworten Sie diese Frage mit Yes, wird die Datei gespeichert und Sie benutzen die modifizierte Datei. Antworten Sie mit No, wird die Datei nicht gespeichert und Sie benutzen die Bibliothek unverändert, so wie sie auf der Festplatte gespeichert ist. Die Schaltfläche Cancel bricht den Befehl ab, so dass weder die Datei gespeichert noch diese Bibliothek "in use" ist. Bibliotheken können im Control Panel als "in use" markiert werden, indem Sie auf den Marker klicken, der seine Farbe ändert, um anzuzeigen, ob die Bibliothek "in use" ist, oder durch die Auswahl des Punkts "Use" im Kontext-Menü des Bibliothekseintrags in der Baumansicht. Im Kontext-Menü gibt es die Möglichkeit alle all oder keine none der Bibliotheken zu wählen.

    Bibliotheken "in use" und Projekte

    Die Bibliotheken, die "in use" sind, werden in der Projekt-Datei (eagle.epf) gespeichert, sofern ein Projekt geladen ist.

    Beispiele

    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 urn:adsk.eagle:library:462; markiert die Verwaltete Bibliothek mit der URN urn:adsk.eagle:library:462
    USE -* /eagle/lbr; gibt zunächst alle bereits makierten Bibliotheken auf und markiert dann alle Bibliotheken aus dem Verzeichnis /eagle/lbr

    VALUE

    Funktion
    Elementwert eintragen und ändern.
    Syntax
    VALUE •..
    VALUE wert •..
    VALUE name wert ..
    VALUE ON;
    VALUE OFF;
    Siehe auch
    NAME, REPOSITION, VARIANT

    In Platine und Schaltplan

    Elemente kann man mit einem Wert versehen, etwa 10k bei einem Widerstand. Bei ICs trägt man anstelle des Wertes sinnvollerweise den Typ ein (z. B. 7400). Den Wert bzw. Typ trägt man mit dem VALUE-Befehl ein. Der Befehl selektiert das nächstgelegene Element und öffnet ein Popup-Menü, in dem man einen neuen Wert festlegen oder den bisherigen verändern kann.

    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.

    Der VALUE-Befehl kann nur in der Standard-Bestückungsvariante verwendet werden. Wenn Sie den Wert für eine andere Bestückungsvariante ändern wollen, verwenden Sie den VARIANT-Befehl .

    Beispiel

    VALUE R1 10k R2 100k
    
    Hier 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.

    Im Device: Wert oder Typ

    Wendet man den VALUE-Befehl im Device-Editier-Modus an, dann sind die Parameter On und Off zulässig.

    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.

    VARIANT

    Funktion
    Verwaltung von Bestückungsvarianten.
    Syntax
    VARIANT
    VARIANT name part_name [NO]POPULATE [ 'value' [ technology ] ];
    VARIANT [ + | - ] name;
    Siehe auch
    VALUE, TECHNOLOGY

    Standardmäßig werden alle Bauteile des Schaltplans auf dem Board bestückt (sofern sie ein Package haben). Manchmal kann es aber notwendig sein, dass in bestimmten Varianten eines Designs einige Bauteile nicht bestückt werden, oder dass sie vom Standard abweichende Werte oder Technologien haben. Der VARIANT-Befehl ermöglicht es Ihnen festzulegen, welche Bauteile in einer bestimmten Ausführung bestückt werden sollen, und welche Werte und Technologien sie jeweils haben sollen.

    name ist der Name der Variante. Groß-/Kleinschreibung ist egal, und er muss in einfache Hochkommas eingeschlossen werden, wenn er Leerzeichen enthält oder '+' oder '-'.

    Wird part_name, gefolgt von dem Schlüsselwort POPULATE oder NOPOPULATE angegeben, so wird eine Variante mit dem Namen name für dieses Bauteil angelegt, in der es als "bestückt" bzw. "nicht bestückt" markiert wird.

    In der aktuellen Bestückungsvariante nicht bestückte Bauteile werden im Schaltplan durch ein X gekennzeichnet, das über ihre gesamte Fläche gezeichnet wird. Im Board wird in einem solchen Fall alles, was die tatsächliche Bestückung des Bauteils betrifft (also Bestückungsaufdruck, Name, Wert etc.) nicht dargestellt.

    Mit den optionalen value und technology (nur im Schaltplan) kann die Variante weiter verfeinert werden. Ein Wert kann nur angegeben werden, wenn das Bauteil einen vom Benutzer definierbaren Wert hat. Soll nur die Technologie angegeben werden, ohne einen speziellen Wert zu verwenden, so kann ein leerer Wert ('') angegeben werden.

    Eine neue Variante kann angelegt werden, indem man name ein '+' voranstellt. Falls eine Variante dieses Namens bereits existiert, passiert nichts.

    Wird dem Varianten-Namen ein '-' vorangestellt, so wird die angegebene Variante gelöscht. Wird als name ein '*' angegeben, so werden alle Varianten gelöscht. Falls dieser Befehl außerhalb eines Scripts verwendet wird, so wird nachgefagt, ob diese Aktion wirklich ausgeführt werden soll.

    Mit der bloßen Angabe eines Varianten-Namens wird das gesamte Projekt auf diese Variante umgeschaltet. Dies bedeutet, dass alle "populate"-Flags, Werte und Technologien so erscheinen, wie es in dieser Variante für die einzelnen Bauteile angegeben wurde. Die Angabe eines leeren Strings ('') schaltet auf die Standard-Variante, was das Gleiche ist als gäbe es keinerlei Varianten. Beachten Sie bitte, dass nach dem Laden einer Zeichnung diese immer in ihrem Standard-Zustand ist, ohne eine bestimmte Variante aktiviert zu haben.

    Ohne jegliche Parameter öffnet sich ein Dialog in dem Sie alle Bestückungsvarianten verwalten können.

    Der Name der aktuellen Bestückungsvariante kann mit der Text-Variablen >ASSEMBLY_VARIANT dargestellt werden.

    Die Befehle ADD, CHANGE PACKAGE | TECHNOLOGY, REPLACE, UPDATE und VALUE können nur verwendet werden, wenn keine Bestückungsvariante aktiv ist.

    Der COPY-Befehl kopiert keine Bestückungsvarianten.

    Im Board wird der VARIANT-Befehl nicht unterstützt. Alles wird vom Schaltplan aus gesteuert, Konsistenz vorausgesetzt (Die Varianten-Kombobox im Board-Editor dient nur zur Information). Ist die F/B-Annotation nicht aktiv, ist es jedoch möglich, das Populate-Flag mit dem Befehl CHANGE zu setzen.

    Modul-Bestückungsvarianten

    Bestückungsvarianten können auch in Modulen erzeugt werden. In jeder Modul-Instanz kann eine Bestückungsvariante des jeweiligen Moduls gewählt werden.

    Die Bestückungsvarianten im Schaltplan und in den Modulen sind völlig unabhängig voneinander. Mit dem VARIANT-Befehl ist es nicht möglich eine Bestückungsvariante eines Moduls auszuwählen.

    Der Klarheit wegen unterscheiden wir deswegen zwischen Modul-Bestückungsvarianten und Haupt-Bestückungsvarianten. Innerhalb eines Moduls bezieht sich der VARIANT-Befehl auf dessen Modul-Bestückungsvarianten, auf den Haupt-Schaltplanseiten auf die Haupt-Bestückungsvarianten.

    VIA

    Funktion
    Plazieren von Durchkontaktierungen in Platinen.
    Syntax
    VIA ['signal_name'] [diameter] [shape] [layers] [flags] •..
    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.

    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 Vias 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 Via so plaziert wird, dass es unterschiedliche Signale verbindet. Bitte führen Sie deshalb einen Design Rule Check durch, nachdem Sie den VIA-Befehl mit dem Parameter signal_name benutzt haben!

    Via-Durchmesser und Bohrdurchmesser

    Die Eingabe eines Durchmessers vor dem Plazieren ändert die Größe des Vias. Der Durchmesser wird in der aktuellen Maßeinheit angegeben. Er darf maximal 200 mm (ca. 7.7840 Zoll) betragen.

    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.

    Via-Form

    Ein Via kann eine der folgenden Formen (shape) haben:

    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.

    Layer

    Der Parameter layers gibt an über welche Layer sich dieses Via erstrecken soll. Die Syntax ist von-nach, wobei 'von' und 'nach' die Layer-Nummern sind über die sich das Via erstrecken soll. So würde zum Beispiel 2-7 ein Via erzeugen, das von Layer 2 bis Layer 7 geht (7-2 hätte die selbe Bedeutung). Falls das Layer-Setup in den Design Rules genau dieses Via nicht zulässt, wird das nächst längere Via genommen (bzw. eine Fehlermeldung ausgegeben, falls kein solches Via gesetzt werden kann). Mit SET Option.ViaLength 1 wird die Via-Länge als Text angezeigt.

    Flags

    Folgende flags können dazu benutzt werden, das Erscheinungsbild eines Vias zu beeinflussen:

    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.

    WINDOW

    Funktion
    Bildausschnitt festlegen oder Bild auffrischen.
    Syntax
    WINDOW;
    WINDOW •;
    WINDOW • •;
    WINDOW • • •
    WINDOW scale_factor
    WINDOW FIT
    WINDOW LAST
    WINDOW FLIP
    Maustasten
    Linke&Ziehen definiert einen rechteckigen Bildausschnitt (entspricht "• •;)".
    Tastatur
    Alt+F2: WINDOW FIT Zeichnung formatfüllend darstellen
    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)
    Der WINDOW-Befehl legt den sichtbaren Ausschnitt der Zeichnung fest. Ohne weitere Parameter frischt der Befehl das Bild auf.

    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.

    Window Flip

    WINDOW FLIP;
    
    erlaubt es dem Anwender das Board von der Unterseite her zu sehen und zu bearbeiten.

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

    Wenn Sie sehr stark in eine Zeichnung hineinzoomen können folgende Dinge passieren:

    • Texte, die nicht den Vektor-Font benutzen, werden nicht mehr dargestellt, wenn sie größer sind als das Editor-Fenster.
    • Kreise und Kreisbögen werden angenähert und erscheinen daher unter Umständen nicht genau an der erwarteten Stelle (insbesondere wenn sie eine sehr kleine Breite haben).
    • Ob die Grid-Linien im feinsten Raster sichtbar werden, wenn Sie ganz hineinzoomen, hängt von der Bildschirmauflösung, der Größe des Editor-Fensters und dem Wert in "Optionen/Einstellungen/Verschiedenes/Min. sichtbare Rastergröße" ab.

    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.

    Die Syntax zur Bearbeitung dieser Aliase ist:

    WINDOW = name parameter
    Definiert den Alias name, der in die angegebenen parameter expandiert wird. Der name darf aus beliebig vielen Buchstaben, Ziffern und Unterstrichen bestehen, und Groß-/Kleinschreibung spielt keine Rolle. Er muss mit einem Buchstaben oder Unterstrich beginnen und darf keines der Options-Schlüsselworte sein.
    WINDOW = name @
    Definiert den Alias name, der in die aktuelle Bildausschnitt-Einstellung expandiert wird.
    WINDOW = ?
    Erfragt vom Benutzer einen Namen zur Definition eines Aliases für die aktuelle Bildausschnitt-Einstellung.
    WINDOW = name
    Erlaubt es dem Benutzer einen Bildausschnitt zu wählen, der als Alias unter dem angegebenen Namen gespeichert wird.
    WINDOW = name;
    Löscht den Alias mit dem angegebenen Namen.
    WINDOW name
    Expandiert den Alias mit dem angegebenen Namen und führt den WINDOW-Befehl mit dem resultierenden Satz von Parametern aus. Der name kann abgekürzt werden und es dürfen andere Parameter vor und nach dem Alias angegeben werden (auch andere Aliase). Beachten Sie bitte, dass im Falle einer abgekürzten Eingabe Aliase Vorrang vor anderen Schlüsselwörtern des Befehls haben.
    Beispiel:

    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.

    WIRE

    Der 'WIRE'-Befehl wurde durch LINE ersetzt. Wegen der Kompatibilität bei Skripten wird der Alias 'WIRE' weiterhin gültig sein.

    WRITE

    Funktion
    Abspeichern einer Zeichnung oder Bibliothek.
    Syntax
    WRITE;
    WRITE name
    WRITE @name
    WRITE 7 [ name ]
    WRITE [ DBL ] name
    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.

    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:

    • Wenn eine Platinen-/Schaltplan-Datei unter dem selben Namen gespeichert wird, wird die zugehörige Schaltplan-/Platinen-Datei ebenfalls gespeichert, sofern sie geändert wurde.
    • wenn eine Platinen-/Schaltplan-Datei unter einem unterschiedlichen Namen gespeichert wurde, fragt das Programm, ob die zugehörige Schaltplan-/Platinen-Datei ebenfalls unter diesem Namen gespeichert werden soll.
    • Beim Speichern unter einem unterschiedlichen Namen wird das "Modified"-Flag nicht gelöscht.

    Speichern für EAGLE 7.x

    Wenn man das Wort 7 nach WRITE angibt, wird die Datei für EAGLE 7.x gespeichert. Alle XML-Attribute, die in Version 8 hinzugekommen sind, werden übergangen und es werden verschiedene Anpasungen gemacht, so dass die Datei in EAGLE 7.x geöffnet werden kann. Bitte beachten Sie, dass Informationen, wie zum Beispiel die URNs einer Verwalteten Bibliothek und deren Bestandteile dabei verloren gehen.

    Wird kein Dateiname in der Kommandozeile angegeben, werden Sie aufgefordert einen zu wählen. Bitte beachten Sie, dass die Option @name um unter einem anderen Namen abzuspeichern nicht unterstützt wird, wenn man für EAGLE 7.x abspeichert.

    Ausgabedaten erzeugen

    Drucken

    Die Parameter für das Drucken auf den Systemdrucker können mit folgenden drei Dialogen eingestellt werden:
    Siehe auch PRINT

    Drucken einer Zeichnung

    Wenn Sie den
    PRINT-Befehl ohne abschließenden ';' eingeben, oder wenn Sie Print aus dem Kontext-Menü des Icons einer Zeichnung im Control Panel auswählen, erhalten Sie einen Dialog mit folgenden Optionen:

    Papier

    Definiert das zu verwendende Papierformat.

    Ausrichtung

    Definiert die Papierausrichtung.

    Voransicht

    Schaltet die Druck-Voransicht ein bzw. aus.

    Spiegeln

    Spiegelt die Ausgabe.

    Drehen

    Dreht die Ausgabe um 90°.

    Kopfüber

    Dreht die Ausgabe um 180°. Zusammen mit Drehen wird die Zeichnung um insgesamt 270° gedreht.

    Schwarz

    Ignoriert die Farbeinstellungen der Layer und druckt alles in Schwarz.

    Gefüllt

    Ignoriert die Füllmuster der Layer und druckt alles voll ausgefüllt.

    Skalierungsfaktor

    Skaliert die Zeichnung mit dem gegebenen Wert.

    Blatt-Limit

    Gibt an wieviele Blätter der Ausdruck maximal haben soll. Falls die Zeichnung nicht auf die angegebene Zahl von Blättern passt, wird der tatsächliche Skalierungsfaktor so lange verkleinert, bis sie passt. Der Standardwert von 0 bedeutet "kein Limit".

    Alle

    Alle Seiten des Schaltplans werden ausgedruckt (das ist der Standardwert, wenn Print aus dem Kontext-Menü eines Schaltplan-Icons ausgewählt wird).

    Von...bis

    Nur die angegebenen Seiten werden ausgedruckt.

    Diese

    Es wird nur die Seite ausgedruckt, die gerade editiert wird (das ist der Standardwert, wenn der PRINT-Befehl in einem Schaltplan-Editor Fenster verwendet wird).

    Hierarchie

    Schaltplanseiten von Modulen werden für jede Verwendung in Modulinstanzen mit entsprechenden Bauteil- und Netznamen gedruckt.

    Drucker...

    Ruft den System-Druckerdialog auf, in dem der Drucker ausgewählt werden kann sowie druckerspezifische Parameter eingestellt werden können.

    PDF...

    Erzeugt eine PDF-Datei (Portable Document Format) mit den gewählten Druckeinstellungen.

    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:

    Lange Zeilen umbrechen

    Schaltet den Zeilenumbruch für zu lange Zeilen ein.

    Drucker...

    Ruft den System-Druckerdialog auf, in dem der Drucker ausgewählt werden kann sowie druckerspezifische Parameter eingestellt werden können.

    PDF...

    Erzeugt eine PDF-Datei (Portable Document Format) mit den gewählten Druckeinstellungen.

    Die restlichen Optionen dienen der Seiteneinrichtung.

    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.

    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.

    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.

    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.

    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.

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

    CAM-Prozessor

    Mit dem CAM-Prozessor können Sie jede Layer-Kombination an ein Peripheriegerät oder in eine Datei ausgeben.

    Die folgenden Hilfe-Themen führen Sie durch die erforderlichen Schritte, von der Auswahl der Daten-Datei bis zur Konfiguration des Ausgabegeräts (Device).

    Sie können verschiedene Parametersätze zu einem CAM-Prozessor-Job zusammenstellen, mit dessen Hilfe Sie einen kompletten Satz von Ausgabedateien durch Anklicken eines Buttons erzeugen können.

    Siehe auch Drucken auf dem System-Drucker

    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öffnetLädt ein der zuletzt geöffneten Dateien
    Job speichern...Gegenwärtigen Job sichern
    Schließen CAM-Prozessor-Fenster schließen
    Beenden Programm beenden

    Layer

    Alle abwählen Alle Layer deselektieren
    Ausgewählte zeigen Nur die selektierten Layer anzeigen
    Alle zeigen Alle Layer anzeigen

    Fenster

    Control Panel Zum Control Panel wechseln
    1 Schaltplan - ... Zu Fenster 1 wechseln
    2 Board - ... Zu Fenster 2 wechseln

    Hilfe

    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

    CAM-Prozessor-Job

    Ein CAM-Prozessor-Job besteht aus unterschiedlichen Sections, von denen jede einen kompletten Satz von CAM-Prozessor-Parametern mit einer bestimmten Layer-Auswahl darstellt.

    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.

    Section

    Der Section-Selektor zeigt die gegenwärtig aktive Job-Section an. Durch Anklicken des Buttons können Sie jede der vorher mit dem Add-Button definierten Sections auswählen.

    Prompt

    Wenn Sie in dieses Feld einen Text eintragen, gibt der CAM-Prozessor diese Meldung aus, bevor er die zugehörige Job-Section bearbeitet. Wenn Sie zum Beispiel vor jeder Ausgabe das Papier in den Stiftplotter einlegen wollen, könnte die Meldung "Bitte Papier wechseln!" lauten. Jede Section kann ihre eigene Meldung haben. Wenn keine Meldung definiert ist, wird die Section ohne vorherige Unterbrechung ausgeführt.

    Add

    Klicken Sie den Add-Button an, um dem Job eine neue Section hinzuzufügen. Sie werden dann nach dem Namen der neuen Section gefragt. Für die neue Section gelten die Parametereinstellungen, die im Menü zu sehen sind.
    Bitte achten Sie darauf, wenn Sie eine neue Job-Section anlegen, dass Sie zuerst mit 'Add' die neue Section anlegen und erst danach die Parameter modifizieren. Wenn Sie zuerst die Parameter der gegenwärtigen Section modifizieren und erst danach mit 'Add' die neue Section anlegen, werden Sie vom Programm gefragt, ob Sie die Änderungen an der gegenwärtigen Section abspeichern wollen oder nicht.

    Del

    Durch Anklicken des Del-Buttons löschen Sie die gegenwärtige Job-Section. Bevor die Section gelöscht wird, müssen Sie die Rückfrage, ob sie wirklich gelöscht werden soll, bestätigen.

    Process Section

    Der Process Section-Button startet die Datenausgabe für die gegenwärtig angezeigte Section.

    Process Job

    Der Process Job-Button startet die Datenausgabe für den gesamten Job. Dabei wird die zuerst definierte Section zuerst bearbeitet. Es entstehen die gleichen Ausgabedaten, als würden Sie der Reihe nach die unterschiedlichen Sections auswählen und mit dem Process Section-Button starten.

    Ausgabetreiber (Output Device)

    Der Ausgabetreiber (Output Device) legt fest, welche Art von Daten der CAM-Prozessor erzeugt. Sie können aus den unterschiedlichsten Treiber den geeigneten auswählen, z.B. für Foto-Plotter, Bohrstationen etc.

    Device

    Durch Anklicken des Device-Selectors öffnen Sie eine Liste aller verfügbaren Device-Treiber.

    Skalierungsfaktor

    Bei Geräten, die eine Skalierung erlauben, können Sie in dieses Feld einen Skalierungsfaktor eintragen. Werte über 1 führen zu einer Vergrößerung, Werte unter 1 verkleinern die Ausgabe.

    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.

    Datei

    Sie können in dieses Feld den Namen der
    Ausgabedatei direkt eingeben, oder Sie klicken den Datei-Button an, um einen Dialog für die Definition der Ausgabedatei zu öffnen.
    Wenn Sie den Dateinamen aus dem Namen der Schaltplan- oder Platinen-Datei ableiten wollen, können Sie den Namen teilweise angeben (mindestens die Extension, z.B. .gbr). In diesem Fall wird der Rest des Dateinamens von der Quelldatei abgeleitet.

    Blendentabelle

    Sie können in dieses Feld den Namen der Blenden-Konfigurationsdatei direkt eingeben, oder Sie klicken den Wheel-Button an, um einen Datei-Dialog zu öffnen und die Datei zu selektieren.
    Wenn Sie den Dateinamen aus dem Namen der Schaltplan- oder Platinen-Datei ableiten wollen, können Sie den Namen teilweise angeben (mindestens die Extension, z.B. .whl). In diesem Fall wird der Rest des Dateinamens von der Quelldatei abgeleitet.

    Bohrertabelle

    Sie können in dieses Feld den Namen der Bohrer-Konfigurationsdatei direkt eingeben, oder Sie klicken den Rack-Button an, um einen Datei-Dialog zu öffnen und die Datei zu selektieren.
    Wenn Sie den Dateinamen aus dem Namen der Schaltplan- oder Platinen-Datei ableiten wollen, können Sie den Namen teilweise angeben (mindestens die Extension, z.B. .drl). In diesem Fall wird der Rest des Dateinamens von der Quelldatei abgeleitet. Manche Treiber (wie zum Beispiel EXCELLON) können die Bohrerkonfiguration automatisch generieren, wobei dann dieses Feld nicht verfügbar ist.

    Device-Parameter

    Abhängig vom gewählten
    Ausgabetreiber gibt es verschiedene treiberspezifische Parameter, mit denen Sie die Ausgabe an Ihre Bedürfnisse anpassen können.

    Blenden-Konfigurationsdatei

    Dem Fotoplotter muss bekannt sein, welche Blenden den Codes in der Ausgabedatei entsprechen. Diese Zuordnung ist in der Blenden-Konfigurationsdatei definiert.

    Beispiel

    D010    round     0.004
    D040    square    0.004
    D100    rectangle 0.060 x 0.075
    D104    oval      0.030 x 0.090
    D110    draw      0.004
    
    Die Datei darf mehrere Blenden enthalten, die den gleichen D-Code benutzen, so lange alle von einem der Typen draw oder round sind und die gleiche Größe haben. Dies kann dazu benutzt werden um Blenden, die letztlich zum gleichen Zeichenergebnis führen, auf einen gemeinsamen D-Code abzubilden.

    Blenden-Emulation

    Wenn die Option "Blenden" gewählt ist, werden nicht vorhandene Blenden mit kleineren Blenden emuliert. Ist sie ausgeschaltet, werden keine Blenden emuliert.

    Achtung: Die Blendenemulation kann zu sehr langen Plot-Zeiten führen (hohe Kosten!).

    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.

    Toleranzen werden in Prozent angegeben.

    Bitte beachten Sie, dass dadurch Ihre "Design Rules" unter Umständen nicht mehr eingehalten werden!

    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.

    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.

    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.

    Toleranzen werden in Prozent angegeben.

    Offset

    Offset in x- und y-Richtung (Inch, Dezimalzahl)

    Kann dazu verwendet werden den Nullpunkt von großformatigen Plottern in die linke untere Ecke zu verlegen.

    Bedruckbarer Bereich

    Height

    Bedruckbarer Bereich in y-Richtung (Inch).

    Width

    Bedruckbarer Bereich in x-Richtung (Inch).

    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.

    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.

    Bitte verwenden Sie einen Text-Editor, der keine Steuerzeichen in die Datei schreibt.

    Ausgabedatei

    Die Ausgabedatei enthält die Daten, die vom CAM-Prozessor erzeugt werden.

    Folgende 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,
    ...                         ...
    *.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).

    Bohrdaten mit blind&buried Vias

    Falls das Board "blind" oder "buried" Vias enthält, generiert der CAM-Prozessor separate Bohrdateien für jeden tatsächlich im Board vorkommenden Via-Übergang. Die Dateinamen werden gebildet indem die Nummern des Start- und End-Layers an den Basisnamen angehängt werden, wie zum Beispiel in
    boardname.drl.0104
    
    welches 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.drl
    
    ergäbe demnach
    boardname.0104.drl
    
    Der 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.

    Flag-Options

    Mirror

    Ausgabe spiegeln. Achtung, dabei entstehen negative Koordinaten, deshalb sollte gleichzeitig Funktion "pos. Coord." eingeschaltet sein.

    Rotate

    Die Zeichnung wird um 90 Grad gedreht. Achtung, dabei entstehen negative Koordinaten, deshalb sollte gleichzeitig die Funktion "pos. Coord." eingeschaltet sein.

    Upside down

    Die Zeichnung wird um 180 Grad gedreht. Zusammen mit Rotate wird die Zeichnung um insgesamt 270 Grad gedreht. Achtung, dabei entstehen negative Koordinaten, deshalb sollte gleichzeitig Funktion "pos. Coord." eingeschaltet sein.

    Pos. Coord

    Die Zeichnung wird so ausgegeben, dass keine negativen Koordinaten vorkommen. Sie wird an die Koordinatenachsen herangeschoben. Achtung: negative Koordinaten führen bei vielen Peripheriegeräten zu Fehlern!

    Quickplot

    Beschleunigte Ausgabe, bei der nur die Umrisse von Objekten erscheinen.

    Optimize

    Mit dieser Option schalten Sie die Wegoptimierung für die Plotterausgabe ein oder aus.

    Fill pads

    Pads füllen. Diese Funktion ist nur mit Treiber des Typs "generic", wie z. B. mit PostScript möglich.
    Wird die Option deselektiert, sind die Bohrungen in Pads und Vias sichtbar.

    Layer und Farben

    Wählen Sie die auszugebenden Layer, indem Sie die Check-Boxes in der Layer-Liste anklicken.

    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,
    ...                         ...
    *.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
    =======================================================
    

    Konturdaten

    EAGLE kann Konturdaten erzeugen, die beispielsweise zum Fräsen von Prototyp-Platinen verwendet werden können.

    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.

    Board vorbereiten

    Zuerst definieren Sie ein
    POLYGON in dem Layer für den die Konturdaten erzeugt werden sollen. Das Polygon muss folgende Eigenschaften haben:
    • es muss den Namen _OUTLINES_ haben
    • es muss das einzige Element mit dem Signalnamen _OUTLINES_ sein
    • der Wert für Rank muss '6' sein
    • der Wert für Width muss dem Durchmesser des Fräswerkzeugs entsprechen
    • es muss groß genug sein, um die ganze Board-Fläche zu bedecken
    Wenn sich ein solches Polygon in Ihrem Layout befindet, berechnet es der RATSNEST-Befehl in der Weise, dass seine Konturen genau den Linien entsprechen, die mit dem Fräswerkzeug gefahren werden müssen, um die einzelnen Signale voneinander freizufräsen. Die Füllung des berechneten Polygons bestimmt, was weggefräst werden muss, um alle unnötigen Kupferflächen zu entfernen.

    Ausgeben der Daten

    Die Konturdaten können über ein User Language Program aus dem Board extrahiert werden. Die Datei outlines.ulp, die mit EAGLE geliefert wird, enthält diesen Prozess vollständig. Wenn Sie ein eigenes ULP schreiben wollen, verwenden Sie am besten outlines.ulp als Ausgangsbasis. Sehen Sie die Hilfe-Seite zu UL_POLYGON für weitere Details über das Erzeugen von Konturdaten mit Hilfe eines Polygons.

    Durchmesser des Fräswerkzeugs

    Der Durchmesser des Fräsers (und somit die Strichbreite width des Polygons) muss so klein sein, dass es möglich ist zwischen zwei unterschiedlichen Signalen durchzukommen, um diese zu isolieren. Führen Sie in jedem Fall einen Design Rule Check (DRC) mit den Werten für Mindestabstände zwischen unterschiedlichen Signalen (Clearance) durch, die dem Durchmesser des Fräswerkzeugs entsprechen!

    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.

    Herstellen des ursprünglichen Zustands im Board

    Stellen Sie sicher, dass Sie nach dem Erzeugen der Konturdaten das Polygon mit dem Namen _OUTLINES_ löschen. Dieses spezielle Polygon verursacht ansonsten Kurzschlüsse im Board, da es nicht den üblichen Design Rules entspricht!

    Standard-Befehl GROUP

    EAGLE bietet eine neue und intuitive Art der Bedienung.

    Im Schaltplan- oder Layout-Editor lassen sich im Menü Optionen/Einstellungen.. unter Verschiedenes die neuen gruppenbezogenen Funktionen mit der Option Standard-Befehl GROUP aktivieren.

    Ist diese Option eingeschaltet, sind folgende Funkionen verfügbar:

    • Der GROUP-Befehl ist standardmäßig aktiv, wenn kein anderer befehl aktiv ist. Die Standard-Aktion ist das Selktieren einer Gruppe.
    • Gruppe löschen: Die ESC-Taste löscht die selektierten Objekte aus der Gruppe.
    • Automatischer MOVE: Nach der Auswahl von Objekten bewegt man diese mit einfachem gehaltenen Linksklick.
    • Inkrementelle Auswahl: Mit gedrückter CTRL-Taste (CMD auf Mac) fügt man einzelne Objekt der Gruppe hinzu oder entfernt sie.
    • Mehrfach-Auswahl: Halten Sie die Alt-Taste gedrückt und klicken Sie mit links in einen dichten Bereich um zwischen den Objekten zu wechseln. Sobald das gewünschte Objekt hervorgehoben wird, bewegen Sie die Maus aus dem Auswahlbereich hinaus um die Auswahl zu treffen.
    • Gruppen-Auswahl mit Polygon: Linksklick definiert die Polygonpunkte. Der erste Punkt darf NICHT auf einem Objekt liegen.
    • Objekte löschen: Mit der Backspace-Taste (Delete auf Mac) löscht man die aktuell gewählten Objekte (in der aktuellen Gruppe).

    Siehe auch GROUP, MOVE, DELETE

    Autorouter

    Der integrierte Autorouter kann vom Board-Fenster aus mit dem Befehl AUTO gestartet werden.

    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.

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

    Der DRC wird in einem Platinen-Fenster ausgeführt. Er überprüft das Design auf Überlappung von unterschiedlichen Potentialen, Abstandsverletzungen etc.

    Design Rules

    Design Rules legen alle Parameter fest denen ein Platinen-Layout entsprechen muss.

    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: Die Genauigkeit ist begrenzt durch die interne Auflösung der Koordinaten (1/320000mm).

    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.

    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.

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

    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

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

    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.

    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.

    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.

    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 Thermal-Isolation zwischen Pads und Signalpolygonen fest.

    Masks

    Im Masks-Tab legt man die Abmessungen von Lötstop- (solder stop) und Lotpasten-Symbolen (cream mask) fest. Sie werden in Prozent der kleineren Seite eines Smds, Pads oder Vias angegeben und werden durch einen Minimal- bzw. Maximalwert begrenzt.
    Eine Lötstopmaske wird automatisch für Smds, Pads und solche Vias erzeugt, die den angegebenen Wert für den Bohrdurchmesser im Parameter "Limit" überschreiten.
    Die Lotpastenmaske (cream frame) wird nur für Smds ezeugt.

    Misc

    Unter Misc kann man die Prüfung von Raster, Winkel, Schriftart und Sperrflächen aktivieren. Ausserdem können Sie festlegen, ob eine Überprüfung gemacht werden soll wegen Texten, die nicht in Vektorschrift geschrieben sind (standardmäßig ein). Es gibt auch eine Option zum Überprüfen von Kupfer in unzulässigen Bereichen (Layer tRestrict/bRestrict. Standard ist an).

    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.

    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.

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

    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.

    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.

    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.

    User Language

    Die EAGLE-User-Language gestattet den Zugriff auf die EAGLE-Datenstrukturen und kann beliebige Ausgabedateien erzeugen.

    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:

    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

    Schreiben eines ULP

    Ein User-Language-Programm ist eine reine Textdatei und wird in einer C-ähnlichen Syntax geschrieben. User-Language-Programme verwenden die Extension .ulp. Sie können ein ULP mit jedem beliebigen Text-Editor schreiben, vorausgesetzt, er fügt keine Steuerzeichen ein, oder Sie können den EAGLE-Text-Editor verwenden.

    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.

    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.

    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

    string s = "Hello World";
    
    wo das Leerzeichen zwischen 'o' und 'W' ein Teil des Strings bleibt.

    Wenn dem abschließenden Newline-Zeichen einer Zeile ein Backslash (\), vorausgeht, werden Backslash und Newline nicht berücksichtigt.

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

    Es gibt zwei Möglichkeiten, Kommentare einzufügen. Die erste verwendet die Syntax

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

    Die zweite Möglichkeit, einen Kommentar einzufügen, verwendet die Syntax

    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.

    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.

    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

    Mit der Zeit kann es vorkommen, dass neuere EAGLE-Versionen neue oder veränderte User Language Funktionen implementieren, die Fehlermeldungen verursachen können, wenn ein solches ULP aus einer älteren EAGLE-Version heraus aufgerufen wird. Um dem Benutzer eine konkrete Meldung zu geben, dass dieses ULP mindestens eine bestimmte EAGLE-Version benötigt, kann ein ULP die #require-Direktive enthalten. Die Syntax lautet
    #require version
    
    Die version muss als
    Real-Konstante der Form
    V.RRrr
    
    angegeben 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.1106
    
    benutzen. Entsprechend würde für Version 5.1.2
    #require 5.0102
    
    gelten.

    #usage

    Jedes User-Language-Programm sollte Informationen über seine Funktion, die Benutzung und evtl. auch über den Autor enthalten.
    Die Direktive
    #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).

    Beispiel

    #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"
    

    Schlüsselwörter (Keywords)

    Die folgenden Schlüsselwörter sind für spezielle Zwecke reserviert und dürfen nicht als normale Identifier-Namen verwendet werden:
    break
    case
    char
    continue
    default
    do
    else
    enum
    for
    if
    int
    numeric
    real
    return
    string
    switch
    void
    while
    
    Zusätzlich sind die Namen von Builtins und Objekt-Typen reserviert und dürfen nicht als Identifier-Namen verwendet werden.

    Identifier

    Ein Identifier ist ein Name, der dazu benutzt wird, eine benutzerdefinierte
    Konstante, Variable oder Funktion einzuführen.

    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.

    Character-Konstanten

    Eine Character-Konstante besteht aus einem einzelnen Buchstaben oder einer
    Escape-Sequenz, eingeschlossen in einfachen Hochkommas, wie in
    'a'
    '='
    '\n'
    
    Der Typ der Character-Konstante ist char.

    Integer-Konstanten

    Abhängig vom ersten (eventuell auch vom zweiten) Zeichen wird eine Integer-Konstante unterschiedlich interpretiert:

    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.

    Beispiele

    16 dezimal
    020 oktal
    0x10 hexadezimal

    Real-Konstanten

    Eine Real-Konstante folgt dem allgemeinen Muster
    [-]int.frac[e|E[±]exp]
    
    wobei die einzelnen Teile für
    • Vorzeichen (optional)
    • Dezimal-Integer
    • Dezimalpunkt
    • Dezimalbruch
    • e oder E und ein Integer-Exponent mit Vorzeichen
    stehen.

    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.

    Beispiele

    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

    String-Konstanten

    Eine String-Konstante besteht aus einer Sequenz von Buchstaben oder einer
    Escape-Sequenz, eingeschlossen in doppelte Anführungszeichen, wie in
    "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 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";
    

    Escape-Sequenzen

    Eine Escape-Sequenz besteht aus einem Backslash (\), gefolgt von einem oder mehreren Sonderzeichen:

    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.

    Beispiele

    '\n'
    "A tab\tinside a text\n"
    "Ring the bell\a\n"
    

    Punctuator-Zeichen

    Die Punctuator-Zeichen, die in einem User-Language-Programm benutzt werden können, sind

    [] 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) { ... }
    

    Geschweifte Klammern

    Geschweifte Klammern (Braces) bezeichnen den Beginn und das Ende einer Verbundanweisung (Compound Statement)
    if (d == z) {
       ++x;
       func();
       }
    
    und werden auch verwendet, um die Werte für die Array-Initialisierung zu gruppieren:
    int ai[] = { 1, 2, 3 };
    

    Komma

    Das Komma trennt die Elemente einer Funktionsargument-Liste oder die Parameter eines Funktionsaufrufs:
    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;
    

    Semikolon

    Der Semikolon schließt ein
    Statement ab, wie in
    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);
        }
    

    Doppelpunkt

    Der Doppelpunkt bezeichnet das Ende eines Labels in einem
    Switch-Statement:
    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");
      }
    

    Gleichheitszeichen

    Das Gleichheitszeichen trennt Variablen-Definitionen von Initialisierungsliste:
    int i = 10;
    char c[] = { 'a', 'b', 'c' };
    
    Es wird auch als
    Zuweisungsoperator verwendet.

    Datentypen

    Ein User-Language-Programm kann Variablen unterschiedlicher Typen definieren, die unterschiedliche Arten von EAGLE-Daten repräsentieren.

    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.

    char

    Der Datentyp char speichert Einzelzeichen, wie die Buchstaben des Alphabets oder kleine Zahlen ohne Vorzeichen.

    Eine Variable des Typs char belegt 8 bit (1 Byte), und kann jeden Wert im Bereich 0..255 speichern.

    Siehe auch Operatoren, Character-Konstanten

    int

    Der Datentyp int speichert Ganzzahlen mit Vorzeichen, wie die Koordinaten eines Objekts.

    Eine Variable vom Typ int belegt 32 bit (4 Byte), und kann jeden Wert im Bereich -2147483648..2147483647 speichern.

    Siehe auch Integer-Konstanten

    real

    Der Datentyp real speichert Gleitkommazahlen mit Vorzeichen, z.B. den Rasterabstand.

    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

    string

    Der Datentyp string speichert Textinformation, z.B. den Namen eines Bauteils oder eines Netzes.

    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 int, und man kann auf sie individuell zugreifen, indem man [index] benutzt.

    Das erste Zeichen eines Strings hat den Index 0:

    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!

    Eine verlustfreie Typ-Umwandlung nach char ist für Standard ASCII Strings möglich:

    string s = "Layout";
    char c = s[2];
    

    Siehe auch Operatoren, Builtin-Functions, String-Konstanten

    Implementierungs-Details

    Der Datentyp string ist implementiert wie von C her bekannte "Zero-terminated-Strings". 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.

    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

    Typecast

    Der Ergebnis-Typ eines arithmetischen Ausdrucks kann explizit in einen anderen arithmetischen Typ umgewandelt werden, indem man einen Typecast darauf anwendet.

    Die allgemeine Syntax eines Typecast ist

    type(expression)
    
    wobei type char, int oder real ist und expression jeder arithmetische Ausdruck sein kann.

    Wenn man mit Typecast einen Ausdruck vom Typ real in int umwandelt, wird der Dezimalbruch des Wertes abgeschnitten.

    Siehe auch Typ-Umwandlung

    Objekt-Typen

    Die EAGLE-Datenstruktur wird in XML-Dateien gespeichert:
    • Library (*.lbr)
    • Schaltplan (*.sch)
    • Board (*.brd)
    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.

    Auf die "Properties" dieser Objekte kann mit Hilfe von Members zugegriffen werden.

    Es gibt zwei Arten von Members:

    • Data members
    • Loop members
    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.

    Loop members werden verwendet, um auf Mehrfach-Objekte derselben Art zuzugreifen, die in einem Objekt einer höheren Hierarchiestufe enthalten sind:

    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.

    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:

    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.

    Objekt-Hierarchie einer Bibliothek:

    LIBRARY
      GRID
      LAYER
      DEVICESET
        DEVICE
        GATE
      PACKAGE
        CONTACT
          PAD
          SMD
        CIRCLE
        HOLE
        RECTANGLE
        FRAME
        DIMENSION
        TEXT
        WIRE
        POLYGON
          WIRE
      SYMBOL
        PIN
        CIRCLE
        RECTANGLE
        FRAME
        DIMENSION
        TEXT
        WIRE
        POLYGON
          WIRE
    

    Objekt-Hierarchie eines Schaltplans:

    SCHEMATIC
      GRID
      LAYER
      LIBRARY
      ATTRIBUTE
      VARIANTDEF
      PART
        ATTRIBUTE
        VARIANT
      SHEET
        CIRCLE
        RECTANGLE
        FRAME
        DIMENSION
        TEXT
        WIRE
        POLYGON
          WIRE
        INSTANCE
          ATTRIBUTE
        MODULEINST
        BUS
          SEGMENT
            LABEL
              TEXT
              WIRE
            WIRE
        NET
          SEGMENT
            JUNCTION
            PINREF
            PORTREF
            TEXT
            WIRE
      MODULE
        PORT
        PART
        SHEET
          (siehe oben)
    

    Änderungshinweis von Version 5 zu Version 6, Kompatibilität:

    • Das Instance steht seit Version 6 in der Hierarchie nicht mehr unter dem Part, sondern unter dem Sheet.
    • Das Part steht nicht mehr unter dem Sheet, sondern direkt unter dem Schaltplan.
    Aus Kompatibilitätsgründen werden die Zugriffe über die entsprechenden Memberfunktionen zwar weiterhin unterstützt, das Verhalten der Objekt-Funktionen entspricht aber der neuen Hierarchie.

    Objekt-Hierarchie einer Platine:

    BOARD
      GRID
      LAYER
      LIBRARY
      ATTRIBUTE
      VARIANTDEF
      CIRCLE
      HOLE
      RECTANGLE
      FRAME
      DIMENSION
      TEXT
      WIRE
      POLYGON
        WIRE
      ELEMENT
        ATTRIBUTE
        VARIANT
      SIGNAL
        CONTACTREF
        POLYGON
          WIRE
        VIA
        WIRE
    

    UL_ARC

    Data members
    angle1 real (Startwinkel, 0.0...359.9)
    angle2 real (Endwinkel, 0.0...719.9)
    cap int (CAP_...)
    layer int
    radius int
    width int
    x1, y1 int (Startpunkt)
    x2, y2 int (Endpunkt)
    xc, yc int (Mittelpunkt)
    Siehe auch
    UL_WIRE

    Konstanten

    CAP_FLAT flache Kreisbogen-Enden
    CAP_ROUND runde Kreisbogen-Enden

    Anmerkung

    Start- und Endwinkel werden im mathematisch positiven Sinne ausgegeben (also gegen den Uhrzeigersinn, "counterclockwise"), wobei gilt angle1 < angle2. Um diese Bedingung einzuhalten kann es sein, dass Start- und Endpunkt eines UL_ARC gegenüber denen des UL_WIRE, von dem der Kreisbogen abstammt, vertauscht sind.

    Beispiel

    board(B) {
      B.wires(W) {
        if (W.arc)
           printf("Arc: (%f %f), (%f %f), (%f %f)\n",
                  u2mm(W.arc.x1), u2mm(W.arc.y1), u2mm(W.arc.x2), u2mm(W.arc.y2), u2mm(W.arc.xc), u2mm(W.arc.yc));
        }
      }
    

    UL_AREA

    Data members
    x1, y1 int (linke untere Ecke)
    x2, y2 int (rechte obere Ecke)
    Siehe auch
    UL_BOARD, UL_DEVICE, UL_PACKAGE, UL_SHEET, UL_SYMBOL

    UL_AREA ist ein Pseudo-Objekt, das Informationen über die Fläche liefert, die ein Objekt einnimmt. Für ein UL_PACKAGE bzw. UL_SYMBOL in einem UL_ELEMENT- bzw. UL_INSTANCE-Kontext beinhalten die Koordinaten den Offset des betreffenden Bauteils und die Fläche von Texten, die nach REPOSITION verschoben wurden.

    Beispiel

    board(B) {
      printf("Area: (%f %f), (%f %f)\n",
              u2mm(B.area.x1), u2mm(B.area.y1), u2mm(B.area.x2), u2mm(B.area.y2));
      }
    

    UL_ATTRIBUTE

    Data members
    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
    Siehe auch
    UL_DEVICE, UL_PART, UL_INSTANCE, UL_ELEMENT

    Konstanten

    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.

    Anmerkung

    display enthält einen bitweise ODER-verknüpften Wert, bestehend aus ATTRIBUTE_DISPLAY_FLAG_..., der angibt welche Teile des Attributs dargestellt werden. Dieser Wert ist nur dann gültig, wenn display in einem UL_INSTANCE- oder UL_ELEMENT-Kontext benutzt wird.

    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.

    Beispiel

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

    UL_BOARD

    Data members
    alwaysvectorfontint (ALWAYS_VECTOR_FONT_..., siehe Anmerkung)
    area UL_AREA
    checked int (siehe Anmerkung)
    description string
    grid UL_GRID
    headline string
    name string (siehe Anmerkung)
    verticaltextint (VERTICAL_TEXT_...)
    Loop members
    attributes() UL_ATTRIBUTE (siehe Anmerkung)
    circles() UL_CIRCLE
    classes() UL_CLASS
    dimensions() UL_DIMENSION
    elements() UL_ELEMENT
    errors() UL_ERROR
    frames() UL_FRAME
    holes() UL_HOLE
    layers() UL_LAYER
    libraries() UL_LIBRARY
    polygons() UL_POLYGON
    rectangles() UL_RECTANGLE
    signals() UL_SIGNAL
    texts() UL_TEXT
    variantdefs()UL_VARIANTDEF
    wires() UL_WIRE
    Siehe auch
    UL_LIBRARY, UL_SCHEMATIC, variant()

    Konstanten

    ALWAYS_VECTOR_FONT_GUIdie Option "Immer Vektor-Schrift" ist im User-Interface-Dialog gesetzt
    ALWAYS_VECTOR_FONT_PERSISTENTdie Option "Immer Vektor-Schrift" ist in diese Zeichnung eingeprägt

    VERTICAL_TEXT_UPLeserichtung für vertikale Texte: aufwärts
    VERTICAL_TEXT_DOWNLeserichtung für vertikale Texte: abwärts

    Anmerkung

    Der Wert von alwaysvectorfont kann in einem logischen Kontext verwendet werden oder er kann auch mit den ALWAYS_VECTOR_FONT_... Konstanten maskiert werden, um die Herkunft dieser Einstellung zu ermitteln, wie zum Beispiel in
    if (B.alwaysvectorfont) {
       // alwaysvectorfont ist gesetzt
       }
    if (B.alwaysvectorfont & ALWAYS_VECTOR_FONT_GUI) {
       // alwaysvectorfont ist in der Benutzeroberfläche gesetzt
       }
    
    Der Wert von checked kann in einem logischen Kontext verwendet werden; er ist nur gesetzt, wenn gerade ein 'Design Rule Check' (DRC) durchgeführt wurde.

    Das name Member liefert den vollständigen Dateinamen, inklusive Verzeichnis.

    Das Loop member attributes() geht durch die globalen Attribute.

    Beispiel

    board(B) {
      B.elements(E) printf("Element: %s\n", E.name);
      B.signals(S)  printf("Signal: %s\n", S.name);
      }
    

    UL_BUS

    Data members
    name string (BUS_NAME_LENGTH)
    Loop members
    segments() UL_SEGMENT
    Siehe auch
    UL_SHEET

    Konstanten

    BUS_NAME_LENGTH max. Länge eines Busnamens (obsolet - ab Version 4 können Bus-Namen beliebig lang sein)

    Beispiel

    schematic(SCH) {
      SCH.sheets(SH) {
        SH.busses(B) printf("Bus: %s\n", B.name);
        }
      }
    

    UL_CIRCLE

    Data members
    layer int
    radius int
    width int
    x, y int (Mittelpunkt)
    Siehe auch
    UL_BOARD, UL_PACKAGE, UL_SHEET, UL_SYMBOL

    Beispiel

    board(B) {
      B.circles(C) {
        printf("Circle: (%f %f), r=%d, w=%d\n",
               u2mm(C.x), u2mm(C.y), u2mm(C.radius), u2mm(C.width));
        }
      }
    

    UL_CLASS

    Data members
    clearance[number]int (siehe Anmerkung)
    drill int
    name string (siehe Anmerkung)
    number int
    width int
    Siehe auch
    Design Rules, UL_NET, UL_SIGNAL, UL_SCHEMATIC, UL_BOARD

    Anmerkung

    Das clearance Data Member liefert den Mindestabstand zwischen dieser Netzklasse und der Netzklasse mit der angegebenen Nummer. Wird keine Nummer angegeben (und damit auch keine eckigen Klammern), wird der Mindestabstand der Netzklasse selber geliefert. Wird eine Nummer angegeben, so muss diese zwischen 0 und der Nummer dieser Netzklasse liegen.

    Wenn name einen leeren String liefert, ist die Netzklasse nicht definiert und wird somit auch nicht von einem Signal oder Netz benutzt.

    Beispiel

    board(B) {
      B.signals(S) {
        printf("%-10s %d %s\n", S.name, S.class.number, S.class.name);
        }
      }
    

    UL_CONTACT

    Data members
    name string (CONTACT_NAME_LENGTH)
    pad UL_PAD
    signal string
    smd UL_SMD
    x, y int (Mittelpunkt, siehe Anmerkung)
    Loop members
    polygons() UL_POLYGON (von beliebigen Pad-Formen)
    wires() UL_WIRE (von beliebigen Pad-Formen)
    Siehe auch
    UL_PACKAGE, UL_PAD, UL_SMD, UL_CONTACTREF, UL_PINREF

    Konstanten

    CONTACT_NAME_LENGTH max. empfohlene Länge eines "Contact"-Namens (wird nur für formatierte Ausgaben benutzt)

    Anmerkung

    Das signal Data Member liefert den Namen des Signals, an das dieser Contact angeschlossen ist (nur in einem Board-Kontext verfügbar).

    Die Koordinaten (x, y) des "Contacts" hängen vom Kontext ab aus dem sie aufgerufen werden:

    • Wird "Contact" aus einem UL_LIBRARY-Kontext aufgerufen, sind die Koordinaten dieselben, wie in der Package-Zeichnung
    • In allen anderen Fällen gelten die aktuellen Werte in der Board-Datei

    Beispiel

    library(L) {
      L.packages(PAC) {
        PAC.contacts(C) {
          printf("Contact: '%s', (%f %f)\n",
                 C.name, u2mm(C.x), u2mm(C.y));
          }
        }
      }
    

    UL_CONTACTREF

    Data members
    contact UL_CONTACT
    element UL_ELEMENT
    route int (CONTACT_ROUTE_...)
    routetag string (siehe Anmerkung)
    Siehe auch
    UL_SIGNAL, UL_PINREF

    Konstanten

    CONTACT_ROUTE_ALL alle Kontakte müssen explizit angeschlossen werden
    CONTACT_ROUTE_ANY beliebige Kontakte können angeschlossen werden

    Anmerkung

    Wenn route den Wert CONTACT_ROUTE_ANY hat, liefert das routetag Member einen zusätzlichen String, der eine Gruppe von contactrefs beschreibt, die zu ein und demselben Pin gehören.

    Beispiel

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

    UL_DEVICE

    Data members
    activetechnology string (siehe Anmerkung)
    area UL_AREA
    description string
    headline string
    library string
    libraryurn string (siehe Anmerkung)
    libraryversion int (siehe Anmerkung)
    name string (DEVICE_NAME_LENGTH)
    package UL_PACKAGE (siehe Anmerkung)
    prefix string (DEVICE_PREFIX_LENGTH)
    technologies string (siehe Anmerkung)
    value string ("On" oder "Off")
    Loop members
    attributes() UL_ATTRIBUTE (siehe Anmerkung)
    gates() UL_GATE
    Siehe auch
    UL_DEVICESET, UL_LIBRARY, UL_PART

    Konstanten

    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.

    Anmerkung

    Der Wert des activetechnology-Member hängt vom Kontext ab aus dem es aufgerufen wurde:
    • Wird das Device über das UL_DEVICESET, das gerade im Bibliotheks-Editor-Fenster bearbeitet wird, hergeleitet, dann wird die aktive Technologie, die durch einen TECHNOLOGY Befehl eingestellt wurde, geliefert
    • Wird das Device über UL_PART hergeleitet, wird die aktuelle Technologie, die von diesem Bauteil benutzt wird, ausgegeben
    • In allen anderen Fällen wird ein leerer String geliefert.

    Das package Data Member liefert das Package, das dem Device durch einen PACKAGE-Befehl zugewiesen worden ist. Es kann als boolesche Funktion verwendet werden um zu prüfen, ob dem Device ein Package zugewiesen wurde (siehe Beispiel unten).

    Der Wert des technologies-Member hängt vom Kontext ab aus dem es aufgerufen wurde:

    • Wird das Device über UL_DEVICESET hergeleitet, liefert technologies einen String, der alles über die Technologien des Devices, durch Leerzeichen getrennt, enthält
    • Wird das Device über UL_PART hergeleitet, wird nur die aktuelle Technologie, die von diesem Bauteil benutzt wird, ausgegeben.

    Das Loop member attributes() erwartet einen zusätzlichen Parameter der angibt, für welche Technology die Attribute geliefert werden sollen (siehe das zweite Beispiel).

    Die Objekte libraryurn und libraryversion sind nur verfügbar, wenn das UL_DEVICE aus einer Verwaltete Bibliothek stammt. Ist das nicht der Fall, ist libraryurn ein leerer String und libraryversion gleich -1.

    Beispiele

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

    UL_DEVICESET

    Data members
    activedevice UL_DEVICE (siehe Anmerkung)
    area UL_AREA
    description string
    headline string (siehe Anmerkung)
    library string
    libraryurn string (siehe Anmerkung)
    libraryversion int (siehe Anmerkung)
    locallymodified int (siehe Anmerkung)
    libraryversion int (siehe Anmerkung)
    name string (DEVICE_NAME_LENGTH)
    prefix string (DEVICE_PREFIX_LENGTH)
    urn string (siehe Anmerkung)
    value string ("On" oder "Off")
    Loop members
    devices() UL_DEVICE
    gates() UL_GATE
    Siehe auch
    UL_DEVICE, UL_LIBRARY, UL_PART

    Konstanten

    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)

    Anmerkung

    Wenn gerade ein deviceset im Bibliotheks-Editor-Fenster bearbeitet wird, dann liefert das activedevice-Member das aktive Device, das durch einen PACKAGE Befehl ausgewählt wurde. Es kann als boolesche Funktion verwendet werden, um zu prüfen, ob die Voraussetzungen hierfür gegeben sind (siehe Beispiel unten).

    Das description-Member liefert den vollständigen Beschreibungstext, der mit dem DESCRIPTION-Befehl erzeugt wurde, während das headline-Member nur die erste Zeile der Beschreibung ohne HTML-Tags ausgibt. Wenn Sie description-Text schreiben, denken Sie daran, dass dieser Newline-Anweisungen ('\n') enthalten darf.

    urn enthält eine eindeutige Identifikation für das Deviceset in der Form urn:adsk.eagle:component:123/4, wobei der Teil nach / die Versionsnummer des Devicesets angibt. Um die Basis des URNs zu bekommen (ohne Version), verwendet man urnbase();. Die Versionsnummer bekommt man mit urnversion().

    Die Objekte libraryurn und libraryversion sind nur verfügbar, wenn das UL_DEVICESET aus einer Verwaltete Bibliothek stammt. Ist das nicht der Fall, ist libraryurn ein leerer String und libraryversion gleich -1.

    Das Member locallymodified ist 0, wenn das UL_DEVICESET keine lokalen Veränderungen hat oder 1, wenn dieses UL_DEVICESET lokale Veränderungen hat.
    Das Member librarylocallymodified wird 0, wenn dieses UL_DEVICESET nicht von einer lokal veränderten Bibliothek kommt bzw. 1, wenn dieses UL_DEVICESET aus einer lokal veränderten Bibliothek stammt.

    Beispiel

    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);
          }
        }
      }
    
    if (deviceset)
       deviceset(DS) {
         if (DS.activedevice)
            printf("Active Device: %s\n", DS.activedevice.name);
         }
    

    UL_DIMENSION

    Data members
    dtype int (DIMENSION_...)
    extlength int
    extoffset int
    extwidth int
    layer int
    precision int (Genauigkeit der Maßangabe)
    ratio int
    size int
    unit int (Einheit, GRID_UNIT_...)
    visible int (Einheit, 0=off, 1=on)
    width int
    x1, y1 int (erster Bezugspunkt)
    x2, y2 int (zweiter Bezugspunkt)
    x3, y3 int (Hilfspunkt für die Ausrichtung)
    Loop members
    texts() UL_TEXT
    wires() UL_WIRE
    Siehe auch
    UL_BOARD, UL_GRID, UL_PACKAGE, UL_SHEET, UL_SYMBOL

    Konstanten

    DIMENSION_PARALLEL lineare Bemaßung mit paralleler Maßlinie
    DIMENSION_HORIZONTAL lineare Bemaßung mit waagerechter Maßlinie
    DIMENSION_VERTICAL lineare Bemaßung mit senkrechter Maßlinie
    DIMENSION_RADIUS Radius-Bemaßung
    DIMENSION_DIAMETER Durchmesser-Bemaßung
    DIMENSION_ANGLE Winkel-Bemaßung
    DIMENSION_LEADER ein beliebiger Pfeil

    Anmerkung

    Die Loop-Members texts() und wires() gehen durch alle Texte und Linien, aus denen die Bemaßung besteht.

    Beispiel

    board(B) {
      B.dimensions(D) {
        printf("Dimension: (%f %f), (%f %f), (%f %f)\n",
               u2mm(D.x1), u2mm(D.y1), u2mm(D.x2), u2mm(D.y2), u2mm(D.x3), u2mm(D.y3));
        }
      }
    

    UL_ELEMENT

    Data members
    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
    package3d UL_PACKAGE3D (siehe Anmerkung)
    populate int (0=do not populate, 1=populate)
    row string (siehe Anmerkung)
    smashed int (siehe Anmerkung)
    spin int
    value string (ELEMENT_VALUE_LENGTH)
    x, y int (Ursprung, Aufhängepunkt)
    Loop members
    attributes() UL_ATTRIBUTE
    texts() UL_TEXT (siehe Anmerkung)
    Siehe auch
    UL_BOARD, UL_CONTACTREF

    Konstanten

    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)

    Anmerkung

    Mit dem attribute[]-Member kann man ein UL_ELEMENT nach dem Wert eines bestimmten Attributs fragen (siehe das zweite Beispiel). Der zurückgelieferte String ist leer, wenn es kein Attribut mit dem angegebenen Namen gibt, oder wenn dieses Attribut explizit leer ist.

    Das texts()-Member läuft nur durch die mittels REPOSITION 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.

    Nicht alle UL_ELEMENTs haben 3D-Packages. Das package3d-Member kann als boolesche Funktion verwendet werden, um zu prüfen, ob ein 3D-Package vorhanden ist oder nicht, z.B. if (E.package3d).

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

    Beispiele

    board(B) {
      B.elements(E) {
        printf("Element: %s, (%f %f), Package=%s\n",
               E.name, u2mm(E.x), u2mm(E.y), E.package.name);
        }
      }
    
    board(B) {
      B.elements(E) {
        if (E.attribute["REMARK"])
           printf("%s: %s\n", E.name, E.attribute["REMARK"]);
        }
      }
    

    UL_ERROR

    Data members
    area UL_AREA
    area2 UL_AREA (siehe Anmerkung)
    code int (Identifikations-Nummer)
    description string
    layer int
    modulename string
    s1 string (siehe Anmerkung)
    s2 string
    s3 string
    s4 string
    s5 string
    s6 string
    sheet int (Seitennummer)
    signature string (Signatur-String)
    state int (ERROR_STATE_...)
    type int (ERROR_TYPE_...)
    x, y int (Mittelpunkt)
    Loop members
    contours() UL_WIRE (siehe Anmerkung)
    Siehe auch
    UL_BOARD, UL_SCHEMATIC

    Konstanten

    ERROR_STATE_ACTIVE Fehler wurde weder bearbeitet, noch gebilligt
    ERROR_STATE_APPROVED Fehler wurde gebilligt
    ERROR_STATE_PROCESSED Fehler wurde bearbeitet
    ERROR_TYPE_NONE kein Fehler
    ERROR_TYPE_WARNING Warnung
    ERROR_TYPE_ERROR Fehler
    ERROR_TYPE_CONSISTENCY Konsistenz-Fehler

    Anmerkung

    UL_ERROR ist ein Pseudo-Objekt, das Informationen über ERC- bzw. DRC-Fehler liefert.

    Die Member layer und contours() sind nur im UL_BOARD Kontext und die Member area2, modulename, s1..s6 und sheet sind nur im UL_SCHEMATIC Kontext verfügbar.

    Das Member area2 ist eine zweite UL_AREA, die nur im Schaltplan bei einzelnen ERC-Fehlern die entsprechende Region im Board angibt. Die Member s1..s6 sind 'string'-Werte, die bei bestimmten ERC-Fehlern zusätzliche Informationen wie Namen liefern.

    Das Loop-Member contours() geht durch die Umriss-Wires des DRC-Polygons.

    Beispiel

    string s1;
    string ErrLst[];
    int ErrCnt = 0;
    string ErrLstHeader;
    if (board) board(B) {
       ErrLstHeader = "Code\tState\tDescription\tLayer\tSignature";
       if (B.checked) {
          B.errors(ER) {
             if (ER.state == ERROR_STATE_ACTIVE) {
                sprintf(s1, "%d\t%d\t%s\t%d\t%s", ER.code, ER.state, ER.description, ER.layer, ER.signature);
                ErrLst[ErrCnt++] = s1;
             }
          }
       }
    }
    if (schematic) schematic(SCH) {
       ErrLstHeader = "Code\tState\tDescription\tSheet\tModule\ts1\ts2\ts3\ts4\ts5\ts6";
       if (SCH.checked) {
          SCH.errors(ER) {
             if (ER.state == ERROR_STATE_ACTIVE) {
                sprintf(s1, "%d\t%d\t%s\t%d\t%s\t%s\t%s\t%s\t%s\t%s\t%s", ER.code, ER.state, ER.description, ER.sheet, ER.modulename, ER.s1, ER.s2, ER.s3, ER.s4, ER.s5, ER.s6);
                ErrLst[ErrCnt++] = s1;
             }
          }
       }
    }
    dlgDialog("Errors") {
       int sel = -1;
       dlgListView(ErrLstHeader, ErrLst, sel);
       dlgPushButton("+OK") dlgAccept();
    };
    

    UL_FRAME

    Data members
    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)
    Loop members
    texts() UL_TEXT
    wires() UL_WIRE
    Siehe auch
    UL_BOARD, UL_PACKAGE, UL_SHEET, UL_SYMBOL

    Konstanten

    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

    Anmerkung

    border enthält einen bitweise ODER-verknüpften Wert, bestehend aus FRAME_BORDER_..., der angibt welche der vier Ränder dargestellt werden.

    Die Loop-Members texts() und wires() gehen durch alle Texte und Linien, aus denen der Frame besteht.

    Beispiel

    board(B) {
      B.frames(F) {
        printf("Frame: (%f %f), (%f %f)\n",
               u2mm(F.x1), u2mm(F.y1), u2mm(F.x2), u2mm(F.y2));
        }
      }
    

    UL_GATE

    Data members
    addlevel int (GATE_ADDLEVEL_...)
    name string (GATE_NAME_LENGTH)
    swaplevel int
    symbol UL_SYMBOL
    x, y int (Aufhängepunkt, siehe Anmerkung)
    Siehe auch
    UL_DEVICE

    Konstanten

    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)

    Anmerkung

    Die Koordinaten des Aufhängepunktes (x, y) sind immer bezogen auf die Lage des Gates im Device, auch wenn das UL_GATE über ein UL_INSTANCE geholt wurde.

    Beispiel

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

    UL_GRID

    Data members
    distance real
    dots int (0=lines, 1=dots)
    multiple int
    on int (0=off, 1=on)
    unit int (GRID_UNIT_...)
    unitdist int (GRID_UNIT_...)
    Siehe auch
    UL_BOARD, UL_LIBRARY, UL_SCHEMATIC, Unit Conversions

    Konstanten

    GRID_UNIT_MIC Micron
    GRID_UNIT_MM Millimeter
    GRID_UNIT_MIL Mil
    GRID_UNIT_INCH Inch

    Anmerkung

    unitdist liefert die Grid-Einheit mit der die tatsächliche Größe des Rasters (die durch distance geliefert wird) definiert wurde, während unit die Grid-Einheit liefert, die für die Anzeige von Werten und die Umrechnung von Benutzereingaben verwendet wird.

    Beispiel

    board(B) {
      printf("Gridsize=%f\n", B.grid.distance);
      }
    

    UL_HOLE

    Data members
    diameter[layer] int (siehe Anmerkung)
    drill int
    drillsymbol int
    x, y int (Mittelpunkt)
    Siehe auch
    UL_BOARD, UL_PACKAGE

    Anmerkung

    diameter[] ist nur für die Layer LAYER_TSTOP und LAYER_BSTOP definiert und liefert den Durchmesser der Lötstopmaske im jeweiligen Layer.

    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.

    Beispiel

    board(B) {
      B.holes(H) {
        printf("Hole: (%f %f), drill=%f\n",
               u2mm(H.x), u2mm(H.y), u2mm(H.drill));
        }
      }
    

    UL_INSTANCE

    Data members
    angle real (0, 90, 180 und 270)
    column string (siehe Anmerkung)
    gate UL_GATE
    mirror int
    name string (INSTANCE_NAME_LENGTH)
    part UL_PART
    row string (siehe Anmerkung)
    sheet int (0=unbenutzt, >0=Seitennummer)
    smashed int (siehe Anmerkung)
    value string (PART_VALUE_LENGTH)
    x, y int (Aufhängepunkt)
    Loop members
    attributes() UL_ATTRIBUTE (siehe Anmerkung)
    texts() UL_TEXT (siehe Anmerkung)
    xrefs() UL_GATE (siehe Anmerkung)
    Siehe auch
    UL_PINREF

    Konstanten

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

    Anmerkung

    Das attributes()-Member läuft nur durch die Attribute, die explizit dieser Instance zugewiesen wurden (einschließlich gesmashter Attribute).

    Das texts()-Member läuft nur durch die mittels REPOSITION 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).

    Beispiel

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

    UL_JUNCTION

    Data members
    diameter int
    x, y int (Mittelpunkt)
    Siehe auch
    UL_SEGMENT

    Beispiel

    schematic(SCH) {
      SCH.sheets(SH) {
        SH.nets(N) {
          N.segments(SEG) {
            SEG.junctions(J) {
              printf("Junction: (%f %f)\n", u2mm(J.x), u2mm(J.y));
              }
            }
          }
        }
      }
    

    UL_LABEL

    Data members
    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)
    Loop members
    wires() UL_WIRE (siehe Anmerkung)
    Siehe auch
    UL_SEGMENT

    Anmerkung

    Falls xref ungleich 0 ist, läuft das wires() Loop member durch die Wires, aus denen die Umrandung des Querverweis-Labels besteht. Ansonsten ist die Schleife leer.

    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.

    Beispiel

    sheet(SH) {
      SH.nets(N) {
        N.segments(S) {
          S.labels(L) {
            printf("Label: (%f %f) '%s'", u2mm(L.x), u2mm(L.y), L.text.value);
            }
          }
        }
      }
    

    UL_LAYER

    Data members
    color int
    fill int
    name string (LAYER_NAME_LENGTH)
    number int
    used int (0=unbenutzt, 1=benutzt)
    visible int (0=off, 1=on)
    Siehe auch
    UL_BOARD, UL_LIBRARY, UL_SCHEMATIC

    Konstanten

    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)

    Beispiel

    board(B) {
      B.layers(L) printf("Layer %3d %s\n", L.number, L.name);
      }
    

    UL_LIBRARY

    Data members
    editable int (siehe Anmerkung)
    description string (siehe Anmerkung)
    grid UL_GRID
    headline string
    name string (LIBRARY_NAME_LENGTH, siehe Anmerkung)
    Loop members
    devices() UL_DEVICE
    devicesets() UL_DEVICESET
    layers() UL_LAYER
    packages() UL_PACKAGE
    symbols() UL_SYMBOL
    Siehe auch
    UL_BOARD, UL_SCHEMATIC

    Konstanten

    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.

    Anmerkung

    Das description-Member liefert den vollständigen Beschreibungstext, der mit dem DESCRIPTION-Befehl erzeugt wurde, während das headline-Member nur die erste Zeile der Beschreibung ohne HTML-Tags ausgibt. Wenn Sie den description-Text benutzen, denken Sie daran, dass dieser Newline-Anweisungen ('\n') enthalten darf. Die description und headline Texte stehen nur direkt innerhalb einer Library-Zeichnung zur Verfügung, nicht wenn die Bibliothek aus einem UL_BOARD- oder UL_SCHEMATIC-Kontext heraus angesprochen wird.

    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.

    Das editable-Member liefert den Wert 0, wenn die Bibliothek vom Anwender editiert werden darf (die Bibliothek gehört dem Anwender). Andernfalls liefert es den Wert 0.

    Beispiel

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

    UL_MODULE

    Data members
    dx, dy int (size)
    description string
    headline string
    name string
    prefix string
    Loop members
    parts() UL_PART
    ports() UL_PORT
    sheets() UL_SHEET
    variantdefs()UL_VARIANTDEF
    Siehe auch
    UL_PORT, UL_SCHEMATIC

    Beispiel

    schematic(SCH) {
      SCH.modules(M) {
        M.parts(P) printf("Part: %s\n", P.name);
        }
      }
    

    UL_MODULEINST

    Data members
    angle real (0, 90, 180 und 270)
    column string (siehe Anmerkung)
    mirror int
    module UL_MODULE
    modulevariantstring (gewählte Bestückungsvariante des Moduls)
    name string (INSTANCE_NAME_LENGTH)
    offset int
    row string (siehe Anmerkung)
    sheet int (Seitennummer)
    smashed int (siehe Anmerkung)
    x, y int (Aufhängepunkt)
    Loop members
    texts() UL_TEXT (siehe Anmerkung)
    wires() UL_WIRE
    Siehe auch
    UL_PORTREF, UL_VARIANTDEF

    Konstanten

    INSTANCE_NAME_LENGTH max. empfohlene Länge eines Instance-Namen (wird nur für formatierte Ausgaben benutzt)

    Anmerkung

    Das texts Loop-Member liefert alle sichtbaren Texte der Modul-Instanz (ob smashed oder nicht spielt hier keine Rolle).

    Die column- und row-Members liefern die Spalten- bzw. Zeilenposition innerhalb des Rahmens auf der Schaltplanseite, auf der diese Instanz platziert ist. Falls es auf dieser Seite keinen Rahmen gibt, oder die Instanz 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 Instanz 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["NAME"]. Dies ist nützlich falls Sie einen solchen Text mit dem MOVE-Befehl etwa durch MOVE R5>NAME selektieren wollen.

    Beispiel

    schematic(SCH) {
      SCH.sheets(SH) {
        SH.moduleinsts(MI) {
          printf("Module instance %s is located on sheet %d\n", MI.name, MI.sheet);
          }
        }
      }
    

    UL_NET

    Data members
    class UL_CLASS
    column string (siehe Anmerkung)
    name string (NET_NAME_LENGTH)
    row string (siehe Anmerkung)
    Loop members
    pinrefs() UL_PINREF (siehe Anmerkung)
    portrefs() UL_PORTREF
    segments() UL_SEGMENT (siehe Anmerkung)
    Siehe auch
    UL_SHEET, UL_SCHEMATIC

    Konstanten

    NET_NAME_LENGTH max. empfohlene Länge eines Netznamens (wird nur für formatierte Ausgaben benutzt)

    Anmerkung

    Das Loop member pinrefs() kann nur benutzt werden, wenn das Net innerhalb eines UL_SCHEMATIC-Kontexts verwendet wird.
    Das Loop member segments() kann nur benutzt werden, wenn das Net innerhalb eines UL_SHEET-Kontexts verwendet wird.

    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.

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

    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.

    Wenn das Netz durch UL_SCHEMATIC.allnets() bereitgestellt wurde, sind die benutzbaren Member: name, class und pinrefs(). Das Loop member pinrefs() geht dann auch durch alle virtuellen pinrefs(), die durch Modul-Instanzen erzeugt wurden.

    Beispiel

    schematic(S) {
      S.nets(N) {
        printf("Net: %s\n", N.name);
        // N.segments(SEG) will NOT work here!
        }
      // or with virt. nets:
      S.allnets(N) {
        printf("Net: %s\n", N.name);
        }
      }
    schematic(S) {
      S.sheets(SH) {
        SH.nets(N) {
          printf("Net: %s\n", N.name);
          N.segments(SEG) {
            SEG.wires(W) {
              printf("\tWire: (%f %f) (%f %f)\n",
                     u2mm(W.x1), u2mm(W.y1), u2mm(W.x2), u2mm(W.y2));
              }
            }
          }
        }
      }
    

    UL_PACKAGE

    Data members
    area UL_AREA
    description string
    headline string
    library string
    libraryurn string (siehe Anmerkung)
    libraryversion int (siehe Anmerkung)
    locallymodified int (siehe Anmerkung)
    librarylocallymodified int (siehe Anmerkung)
    name string (PACKAGE_NAME_LENGTH)
    urn string (siehe Anmerkung)
    Loop members
    circles() UL_CIRCLE
    contacts() UL_CONTACT
    dimensions() UL_DIMENSION
    frames() UL_FRAME
    holes() UL_HOLE
    polygons() UL_POLYGON (siehe Anmerkung)
    rectangles() UL_RECTANGLE
    texts() UL_TEXT (siehe Anmerkung)
    wires() UL_WIRE (siehe Anmerkung)
    Siehe auch
    UL_DEVICE, UL_ELEMENT, UL_LIBRARY

    Konstanten

    PACKAGE_NAME_LENGTH max. empfohlene Länge eines Package-Namens (wird nur für formatierte Ausgaben benutzt)

    Anmerkung

    Das description-Member liefert den vollständigen Beschreibungstext, der mit dem DESCRIPTION-Befehl erzeugt wurde, während das headline-Member nur die erste Zeile der Beschreibung ohne HTML-Tags ausgibt. Wenn Sie description-Text schreiben, denken Sie daran, dass dieser Newline-Anweisungen ('\n') enthalten darf.

    Stammt das UL_PACKAGE aus einem UL_ELEMENT-Kontext, so durchläuft das texts()-Member nur die nicht losgelösten Texte dieses Elements.

    Stammt das UL_PACKAGE aus einem UL_ELEMENT-Kontext, sind Polygone und Wires, die zu einem Kontakt mit beliebiger Pad-Form gehören, nur durch die Loop-Member polygons() und wires() dieses Kontakts verfügbar.

    urn enthält eine eindeutige Identifikation des Packages, in der Form urn:adsk.eagle:footprint:123/4, wobei der Teil nach / die Versionsnummer des Packages angibt. Um die Basis des URNs zu bekommen (ohne Version), verwendet man urnbase();. Die Version bekommt man mit urnversion().

    Die Objekte libraryurn und libraryversion sind nur verfügbar, wenn das UL_PACKAGE aus einer Verwaltete Bibliothek stammt. Ist das nicht der Fall, ist libraryurn ein leerer String und libraryversion gleich -1.

    Das Member locallymodified ist 0, wenn das UL_PACKAGE keine lokalen Veränderungen hat oder 1, wenn dieses UL_PACKAGE lokale Veränderungen hat.
    Das Member librarylocallymodified wird 0, wenn dieses UL_PACKAGE nicht von einer lokal veränderten Bibliothek kommt bzw. 1, wenn dieses UL_PACKAGE aus einer lokal veränderten Bibliothek stammt.

    Beispiel

    library(L) {
      L.packages(PAC) {
        printf("Package: %s\n", PAC.name);
        PAC.contacts(C) {
          if (C.pad)
             printf("\tPad: %s, (%f %f)\n",
                     C.name, u2mm(C.pad.x), u2mm(C.pad.y));
          else if (C.smd)
             printf("\tSmd: %s, (%f %f)\n",
                     C.name, u2mm(C.smd.x), u2mm(C.smd.y));
          }
        }
      }
    board(B) {
      B.elements(E) {
        printf("Element: %s, Package: %s\n", E.name, E.package.name);
        }
      }
    

    UL_PACKAGE3D

    Data members
    description string
    headline string
    library string
    libraryurn string (siehe Anmerkung)
    libraryversion int (siehe Anmerkung)
    name string
    urn string (siehe Anmerkung)
    See also
    UL_DEVICE, UL_ELEMENT, UL_LIBRARY, UL_PACKAGE

    Anmerkung

    Das Member description liefert den vollständigen Beschreibungstext, während das Member headline nur die erste Zeile der Beschreibung ohne HTML-Tags liefert. Wenn Sie description-Text verwenden, denke Sie daran, dass dieser auch Newline- Zeichen ('\n') enthalten kann.

    urn enthält eine eindeutige Identifikation des 3D-Packages, in der Form urn:adsk.eagle:package:123/4, wobei der Teil nach / die Versionsnummer des 3D-Packages angibt. Um die Basis des URNs zu bekommen (ohne Version), verwendet man urnbase();. Die Version bekommt man mit urnversion().

    libraryurn und libraryversion sind nur verfügbar, wenn dieses UL_PACKAGE3D aus einer Verwalteten Bibliothek stammt. Ist das nicht der Fall, ist libraryurn ein leerer String und libraryversion gleich -1.

    Beispiel

    library(L) {
      L.packages3d(P3D) {
        printf("3D Package: %s (%s, Version %d)\n", P3D.name, urnbase(P3D.urn), urnversion(P3D.urn));
        }
      }
    board(B) {
      B.elements(E) {
        printf("Element: %s", E.name);
        if (E.package3d) printf(", 3D Package: %s (%s, Version %d)\n", E.package3d.name, urnbase(E.package3d.urn), urnversion(E.package3d.urn));
        else printf("\n");
        }
      }
    

    UL_PAD

    Data members
    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)
    Siehe auch
    UL_PACKAGE, UL_CONTACT, UL_SMD

    Konstanten

    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_NAME_LENGTH max. empfohlene Länge eines Pad-Namens (identisch mit CONTACT_NAME_LENGTH)

    Anmerkung

    Die Parameter des Pads hängen vom Kontext ab in dem es angesprochen wird:
    • Wird das Pad aus einem UL_LIBRARY-Kontext angesprochen, sind die Koordinaten (x, y) und der Winkel (angle) dieselben, wie in der Package-Zeichnung
    • In allen anderen Fällen gelten die aktuellen Werte vom Board

    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.

    Beispiel

    library(L) {
      L.packages(PAC) {
        PAC.contacts(C) {
          if (C.pad)
             printf("Pad: '%s', (%f %f), d=%f\n",
                     C.name, u2mm(C.pad.x), u2mm(C.pad.y), u2mm(C.pad.diameter[LAYER_BOTTOM]));
          }
        }
      }
    

    UL_PART

    Data members
    attribute[] string (siehe Anmerkung)
    device UL_DEVICE
    deviceset UL_DEVICESET
    module UL_MODULE (siehe Anmerkung)
    modulepart UL_PART (siehe Anmerkung)
    modulepath string (siehe Anmerkung)
    name string (PART_NAME_LENGTH)
    package3d UL_PACKAGE3D
    populate int (0=do not populate, 1=populate)
    value string (PART_VALUE_LENGTH)
    Loop members
    attributes() UL_ATTRIBUTE (siehe Anmerkung)
    instances() UL_INSTANCE (siehe Anmerkung)
    variants() UL_VARIANT (siehe Anmerkung)
    Siehe auch
    UL_SCHEMATIC, UL_SHEET

    Konstanten

    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)

    Anmerkung

    Mit dem attribute[]-Member kann man ein UL_PART nach dem Wert eines bestimmten Attributs fragen (siehe das zweite Beispiel). Der zurückgelieferte String ist leer, wenn es kein Attribut mit dem angegebenen Namen gibt, oder wenn dieses Attribut explizit leer ist.

    Beim Durchlaufen der attributes() eines UL_PART haben nur die name, value, defaultvalue und constant Members des resultierenden UL_ATTRIBUTE gültige Werte.

    Beim Durchlaufen der Bestückungs-variants() eines UL_PART sind nur echte Varianten verfügbar. Die Standard-Bestückungsvariante ist hier nicht verfügbar. Daher wird diese Schleife für Bauteile ohne Bestückungsvarianten nicht ausgeführt.

    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- oder UL_MODULE-Kontext befindet, geht die Schleife durch alle Instances.

    Wenn das Part ein virtuelles Part ist (virtuelle Parts können mit UL_SCHEMATIC.allparts() ermittelt werden, siehe UL_SCHEMATIC), so ist instances() leer.

    Wenn das Part von einem Modul stammt oder virtuell ist, bezieht sich module darauf. Wenn nicht (Part im Hauptschaltplan), ist module Null.

    Wenn das Part virtuell ist, so ist modulepart das entsprechende reale Part vom Herkunfts-Modul module. Ist es ein Part des Hauptschaltplans oder ist es selbst ein Part aus einem Modul, so ist modulepart Null.

    Wenn das Part virtuell ist, so ist modulepath ein String mit der Sequenz von Modul-Instanznamen, die zu dem Modul führen, welches das benutzte Part enthält. Diese Namen sind durch ':' getrennt. In anderen Fällen ist dieser String leer.
    Zum Beispiel hat ein virtuelles Part mit Namen 'MI1:R1' den modulepath 'MI1'.
    'R101', das von einer Modul-Instanz 'MX' mit Offset-Notation stammt, liefert modulepath 'MX'.
    'MAIN:SUB1:SUBSUB1:C5' hat modulepath 'MAIN:SUB1:SUBSUB1'.

    Nicht jedes UL_PART hat ein 3D-Package. Das package3d Member kann als boolesche Funktion verwendet werden um zu prüfen, ob ein 3D-Package vorhanden ist oder nicht, z.B. if (P.package3d).

    Beispiele

    schematic(S) {
      S.parts(P) printf("Part: %s\n", P.name);
    }
    
    schematic(S) {
      S.allparts(P) {
        if (P.attribute["REMARK"])
           printf("%s: %s\n", P.name, P.attribute["REMARK"]);
        if (P.modulepart) {
           P.modulepart.instances(I)
             printf("%s is a virtual part from %s in module %s with part instance on sheet %d\n",
                    P.name, P.modulepart.name, P.module.name, I.sheet);
        }
        else {
           P.instances(I)
             printf("%s is a part on main schematic with instance on sheet %d\n",
                    P.name, I.sheet);
        }
      }
    }
    
    schematic(S) {
      S.allparts(P) {
        if (P.modulepart) {
           string miNames[];
           int nr = strsplit(miNames, P.modulepath, ':');
           if (nr == 1)
              printf("%s is a virtual part created by module instance %s in main schematic.\n",
                     P.name, miNames[0]);
           else {
              printf("%s is a virtual part in a multiple hierarchy created by this path of module instances:\n", P.name);
              for (int i = 0; i < nr; ++i)
                  printf("%s\n", miNames[i]);
           }
        }
      }
    }
    

    UL_PIN

    Data members
    angle real (0, 90, 180 und 270)
    contact UL_CONTACT (veraltet, siehe Anmerkung)
    direction int (PIN_DIRECTION_...)
    function int (PIN_FUNCTION_FLAG_...)
    length int (PIN_LENGTH_...)
    name string (PIN_NAME_LENGTH)
    net string (siehe Anmerkung)
    route int (CONTACT_ROUTE_...)
    swaplevel int
    visible int (PIN_VISIBLE_FLAG_...)
    x, y int (Anschlusspunkt)
    Loop members
    circles() UL_CIRCLE
    contacts() UL_CONTACT (siehe Anmerkung)
    texts() UL_TEXT
    wires() UL_WIRE
    Siehe auch
    UL_SYMBOL, UL_PINREF, UL_CONTACTREF

    Konstanten

    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

    CONTACT_ROUTE_ALL alle Kontakte müssen explizit angeschlossen werden
    CONTACT_ROUTE_ANY beliebige Kontakte können angeschlossen werden

    Anmerkung

    Das contacts() Loop Member geht durch die Contacts, mit denen der Pin durch einen CONNECT-Befehl verbunden worden ist. Dies ist der Fall in einem UL_DEVICE-Kontext oder von UL_PINREF her kommend, nicht aber über UL_LIBRARY.symbols(). Ist dies nicht der Fall, so ist die Liste leer.

    Das contact Data Member liefert den Contact, der dem Pin durch einen CONNECT-Befehl zugewiesen worden ist. Dieses Member ist veraltet! Es funktioniert aus Kompatibilitätsgründen und solange nur ein Pad mit dem Pin verbunden wurde, verursacht aber einen Laufzeitfehler wenn es mit einem Pin benutzt wird, der mit mehreren Pads verbunden ist.

    Das Member route macht ebenfalls nur Sinn, wenn ein Bezug zu Kontakten vorhanden ist, mit denen der Pin verbunden worden ist. Sonst ist der Wert auf 0 gesetzt.

    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:

    • falls der Pin von einem UL_PART stammt, welches auf einer Schaltplanseite verwendet wird, und wenn es ein dazugehöriges Element im Board gibt, dann erhält der Contact die Koordinaten die er im Board hat
    • in allen anderen Fällen erhält der Contact die Koordinaten wie sie in der Package-Zeichnung definiert sind
    Das name Data Member liefert den Namen des Pins immer so, wie er in der Bibliothek definiert wurde, einschließlich eines etwaigen '@'-Zeichens für Pins mit dem gleichen Namen (siehe PIN-Befehl).
    Das texts Loop-Member dagegen liefert den Pin-Namen (sofern er sichtbar ist) immer in der Form, wie er im aktuellen Zeichnungstyp dargestellt wird.

    Das net Data Member liefert den Namen des Netzes, an das der Pin angeschlossen ist (nur in einem UL_SCHEMATIC-Kontext verfügbar).

    Beispiel

    library(L) {
      L.symbols(S) {
        printf("Symbol: %s\n", S.name);
        S.pins(P) {
          printf("\tPin: %s, (%f %f)", P.name, u2mm(P.x), u2mm(P.y));
          if (P.direction == PIN_DIRECTION_IN)
             printf(" input");
          if ((P.function & PIN_FUNCTION_FLAG_DOT) != 0)
             printf(" inverted");
          printf("\n");
          }
        }
      }
    

    UL_PINREF

    Data members
    instance UL_INSTANCE
    part UL_PART
    pin UL_PIN
    Siehe auch
    UL_SEGMENT, UL_CONTACTREF

    Beispiel

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

    UL_POLYGON

    Data members
    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
    Loop members
    contours() UL_WIRE (siehe Anmerkung)
    fillings() UL_WIRE
    wires() UL_WIRE
    Siehe auch
    UL_BOARD, UL_PACKAGE, UL_SHEET, UL_SIGNAL, UL_SYMBOL

    Konstanten

    POLYGON_POUR_SOLID solid
    POLYGON_POUR_HATCH hatch
    POLYGON_POUR_CUTOUT cutout

    Anmerkung

    Die Loop-Member contours() und fillings() gehen durch alle Wires, mit denen das Polygon gezeichnet wird, sofern es zu einem Signal gehört und mit dem Befehl RATSNEST freigerechnet wurde. Das Loop-Member wires() geht immer durch die Wires, die vom Benutzer gezeichnet wurden. Für nicht freigerechnete Signal-Polygone liefert contours() dasselbe Ergebnis wie wires(). Fillings() hat dann keine Bedeutung.

    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.

    Polygon-Strichstärke

    Wenn Sie das Loop-Member fillings() verwenden um die Füll-Linien des Polygons zu erreichen, stellen Sie sicher, dass die Strichstärke width des Polygons nicht null ist (sie sollte etwas über null liegen, bzw. mindestens der Auflösung des Ausgabetreibers mit dem Sie die Zeichnung ausgeben wollen entsprechen). Zeichnen Sie ein Polygon mit Strichstärke = 0, ergibt sich eine riesige Datenmenge, da das Polygon mit der kleinsten Editor-Auflösung von 1/320000mm berechnet wird.

    Teilpolygone

    Ein berechnetes Polygon kann aus verschiedenen getrennten Teilen (positivePolygone genannt) bestehen, wobei jedes davon Aussparungen (negative Polygone genannt) enthalten kann, die von anderen Objekten, die vom Polygon subtrahiert werden, herrühren. Negative Polygone können wiederum weitere positive Polygone enthalten und so weiter.

    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.

    Beispiel

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

    UL_PORT

    Data members
    border int (MODULE_BORDER_...)
    bus string (siehe Anmerkung)
    direction int (PIN_DIRECTION_... (siehe Anmerkung))
    name string (PORT_NAME_LENGTH)
    net string (siehe Anmerkung)
    x, y int (Anschlusspunkt)
    Loop members
    nets() UL_NET (siehe Anmerkung)
    texts() UL_TEXT
    wires() UL_WIRE
    Siehe auch
    UL_MODULE, UL_MODULEINST, UL_PORTREF

    Konstanten

    MODULE_BORDER_BOTTOM am unteren Rand des Modul-Rahmens
    MODULE_BORDER_RIGHT am rechten Rand des Modul-Rahmens
    MODULE_BORDER_TOP am oberen Rand des Modul-Rahmens
    MODULE_BORDER_LEFT am linken Rand des Modul-Rahmens
    PORT_NAME_LENGTH max. empfohlene Länge eines Portnamens (wird nur für formatierte Ausgaben benutzt)

    Anmerkung

    Die Konstanten von direction sind identisch mit denen von PIN_DIRECTION_... (allerdings gibt es bei einem Port kein PIN_DIRECTION_SUP).

    Die Member bus und net liefern den Namen des Busses bzw. Netzes, an welchem der Port angeschlossen ist (nur im UL_MODULEINST-Kontext verfügbar). Zusätzlich geht das Loop-Member nets durch alle vorhandenen Netze dieser Verbindung.

    Beispiel

    schematic(SCH) {
      SCH.modules(M) {
        M.ports(P) printf("Port: %s\n", P.name);
        }
      }
    

    UL_PORTREF

    Data members
    moduleinst UL_MODULEINST
    port UL_PORT
    Siehe auch
    UL_SEGMENT

    Beispiel

    schematic(SCH) {
      SCH.sheets(SH) {
        printf("Sheet: %d\n", SH.number);
        SH.nets(N) {
          printf("\tNet: %s\n", N.name);
          N.segments(SEG) {
            SEG.portrefs(P) {
              printf("\tconnected to: %s, %s\n",
                     P.moduleinst.name, P.port.name);
              }
            }
          }
        }
      }
    

    UL_RECTANGLE

    Data members
    angle real (0.0...359.9)
    layer int
    x1, y1 int (linke untere Ecke)
    x2, y2 int (rechte obere Ecke)
    Siehe auch
    UL_BOARD, UL_PACKAGE, UL_SHEET, UL_SYMBOL

    Die Koordinaten (x1 y1) und (x2 y2) beziehen sich immer auf die ursprüngliche Lage des Rechtecks ohne die Rotation zu berücksichtigen.

    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.

    Beispiel

    board(B) {
      B.rectangles(R) {
        printf("Rectangle: (%f %f), (%f %f)\n",
               u2mm(R.x1), u2mm(R.y1), u2mm(R.x2), u2mm(R.y2));
        }
      }
    

    UL_SCHEMATIC

    Data members
    alwaysvectorfontint (ALWAYS_VECTOR_FONT_..., siehe Anmerkung)
    checked int (siehe Anmerkung)
    description string
    grid UL_GRID
    headline string
    name string (siehe Anmerkung)
    verticaltextint (VERTICAL_TEXT_...)
    xreflabel string
    xrefpart string
    Loop members
    allnets() UL_NET (siehe Anmerkung)
    allparts() UL_PART (siehe Anmerkung)
    attributes() UL_ATTRIBUTE (siehe Anmerkung)
    classes() UL_CLASS
    errors() UL_ERROR
    layers() UL_LAYER
    libraries() UL_LIBRARY
    modules() UL_MODULE
    nets() UL_NET
    parts() UL_PART
    sheets() UL_SHEET
    variantdefs()UL_VARIANTDEF
    Siehe auch
    UL_BOARD, UL_LIBRARY, variant()

    Konstanten

    ALWAYS_VECTOR_FONT_GUIdie Option "Immer Vektor-Schrift" ist im User-Interface-Dialog gesetzt
    ALWAYS_VECTOR_FONT_PERSISTENTdie Option "Immer Vektor-Schrift" ist in diese Zeichnung eingeprägt

    VERTICAL_TEXT_UPLeserichtung für vertikale Texte: aufwärts
    VERTICAL_TEXT_DOWNLeserichtung für vertikale Texte: abwärts

    Anmerkung

    Der Wert von alwaysvectorfont kann in einem logischen Kontext verwendet werden oder er kann auch mit den ALWAYS_VECTOR_FONT_... Konstanten maskiert werden, um die Herkunft dieser Einstellung zu ermitteln, wie zum Beispiel in
    if (SCH.alwaysvectorfont) {
       // alwaysvectorfont ist gesetzt
       }
    if (SCH.alwaysvectorfont & ALWAYS_VECTOR_FONT_GUI) {
       // alwaysvectorfont ist in der Benutzeroberfläche gesetzt
       }
    
    Der Wert von checked kann in einem logischen Kontext verwendet werden; er ist nur gesetzt, wenn gerade ein 'Electrical Rule Check' (ERC) durchgeführt wurde. Das name Member liefert den vollständigen Dateinamen, inklusive Verzeichnis.

    Die Member xreflabel und xrefpart liefern die Format-Strings, die für die Darstellung von Querverweis-Labels und Bauteil-Querverweise benutzt werden.

    Das Loop-Member attributes() geht durch die globalen Attribute.

    Virtuelle Netze, allnets() Loop-Member

    Das Loop-Member allnets() geht durch die Netze des Haupt-Schaltplans und durch alle virtuellen Netze, erzeugt durch Modul-Instanzen.

    Virtuelle Bauteile, allparts() Loop-Member

    Hierarchische Bauteile werden über Modul-Instanzen definiert und existieren eigentlich im Schaltplan nicht, lediglich die Bauteile in den Modulen. Aus diesem Grund nennen wir sie manchmal 'Virtuelle Bauteile'. Ein Modul-Bauteil kann über mehrere Modul-Instanzen von mehreren virtuellen Bauteilen benutzt werden. Da jedes virtuelle Bauteil einem (real existierenden) Element im Board entspricht, stellt die User Language diese Bauteile ebenfalls zur Verfügung, z.B. für die BOM-Generierung.
    Das Loop-Member allparts() geht durch die parts() des Haupt-Schaltplans und durch alle virtuellen Bauteile.

    Beispiel

    schematic(S) {
      S.parts(P) printf("Part: %s\n", P.name);
      }
    

    UL_SEGMENT

    Loop members
    junctions() UL_JUNCTION (siehe Anmerkung)
    labels() UL_LABEL
    pinrefs() UL_PINREF (siehe Anmerkung)
    portrefs() UL_PORTREF
    texts() UL_TEXT (veraltet, siehe Anmerkung)
    wires() UL_WIRE
    Siehe auch
    UL_BUS, UL_NET

    Anmerkung

    Die Loop members junctions() und pinrefs() sind nur für Netzsegmente zugänglich.

    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.

    Beispiel

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

    UL_SHEET

    Data members
    area UL_AREA
    description string
    headline string
    number int
    Loop members
    busses() UL_BUS
    circles() UL_CIRCLE
    dimensions() UL_DIMENSION
    frames() UL_FRAME
    instances() UL_INSTANCE
    moduleinsts()UL_MODULEINST
    nets() UL_NET
    polygons() UL_POLYGON
    rectangles() UL_RECTANGLE
    texts() UL_TEXT
    wires() UL_WIRE
    Siehe auch
    UL_SCHEMATIC

    Beispiel

    schematic(SCH) {
      SCH.sheets(S) {
        printf("Sheet: %d\n", S.number);
        }
      }
    

    UL_SIGNAL

    Data members
    airwireshiddenint
    class UL_CLASS
    name string (SIGNAL_NAME_LENGTH)
    Loop members
    contactrefs() UL_CONTACTREF
    polygons() UL_POLYGON
    vias() UL_VIA
    wires() UL_WIRE
    Siehe auch
    UL_BOARD

    Konstanten

    SIGNAL_NAME_LENGTH max. empfohlene Länge eines Signalnamens (wird nur für formatierte Ausgaben benutzt)

    Beispiel

    board(B) {
      B.signals(S) printf("Signal: %s\n", S.name);
      }
    

    UL_SMD

    Data members
    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)
    Siehe auch
    UL_PACKAGE, UL_CONTACT, UL_PAD

    Konstanten

    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)

    Anmerkung

    Die Parameter des SMDs hängen vom Kontext ab in dem es angesprochen wird:
    • Wird das Smd aus einem UL_LIBRARY-Kontext angesprochen, entsprechen die Werte der Koordinaten (x, y), des Winkels (angle) und die Angabe für Layer und Roundness denen in der Package-Zeichnung
    • in allen anderen Fällen erhalten Sie die aktuellen Werte aus dem Board
    Ruft man die Data Member dx und dy mit einem optionalen Layer-Index auf, werden die Werte für den zugehörigen Layer, entsprechend den Design Rules ausgegeben. Gültige Layer sind LAYER_TOP, LAYER_TSTOP und LAYER_TCREAM für ein Smd im Top-Layer, und LAYER_BOTTOM, LAYER_BSTOP und LAYER_BCREAM für ein Smd im Bottom-Layer.

    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.

    Beispiel

    library(L) {
      L.packages(PAC) {
        PAC.contacts(C) {
          if (C.smd)
             printf("Smd: '%s', (%f %f), dx=%f, dy=%f\n",
                     C.name, u2mm(C.smd.x), u2mm(C.smd.y), u2mm(C.smd.dx), u2mm(C.smd.dy));
          }
        }
      }
    

    UL_SYMBOL

    Data members
    area UL_AREA
    description string
    headline string
    library string
    libraryurn string (siehe Anmerkung)
    libraryversion int (siehe Anmerkung)
    locallymodified int (siehe Anmerkung)
    librarylocallymodified int (siehe Anmerkung)
    name string (SYMBOL_NAME_LENGTH)
    urn string (siehe Anmerkung)
    Loop members
    circles() UL_CIRCLE
    dimensions() UL_DIMENSION
    frames() UL_FRAME
    rectangles() UL_RECTANGLE
    pins() UL_PIN
    polygons() UL_POLYGON
    texts() UL_TEXT (siehe Anmerkung)
    wires() UL_WIRE
    Siehe auch
    UL_GATE, UL_LIBRARY

    Konstanten

    SYMBOL_NAME_LENGTH max. empfohlene Länge eines Symbol-Namens (wird nur für formatierte Ausgaben benutzt)

    Anmerkung

    Stammt das UL_SYMBOL aus einem UL_INSTANCE-Kontext, so durchläuft das texts()-Member nur die nicht losgelösten Texte dieser Instance.

    Der urn ist ein eindeutiger Bezeichner für das Symbol in der Form urn:adsk.eagle:symbol:123/4, wobei der Teil nach dem / die Versionsnummer des Symbols angibt. Um die Basis des URNs zu bekommen (ohne Version), verwendet man urnbase();. Die Version bekommt man mit urnversion().

    Die Objekte libraryurn und libraryversion sind nur verfügbar, wenn das UL_SYMBOL aus einer Verwaltete Bibliothek stammt. Ist das nicht der Fall, ist libraryurn ein leerer String und libraryversion gleich -1.

    Das Member locallymodified ist 0, wenn das UL_SYMBOL keine lokalen Veränderungen hat oder 1, wenn dieses UL_SYMBOL lokale Veränderungen hat.
    Das Member librarylocallymodified wird 0, wenn dieses UL_SYMBOL nicht von einer lokal veränderten Bibliothek kommt bzw. 1, wenn dieses UL_SYMBOL aus einer lokal veränderten Bibliothek stammt.

    Beispiel

    library(L) {
      L.symbols(S) printf("Sym: %s\n", S.name);
      }
    

    UL_TEXT

    Data members
    align int (ALIGN_...)
    angle real (0.0...359.9)
    font int (FONT_...)
    layer int
    linedistance int
    mirror int
    ratio int
    size int
    spin int
    value string
    x, y int (Aufhängepunkt)
    Loop members
    wires() UL_WIRE (siehe Anmerkung)
    Siehe auch
    UL_BOARD, UL_PACKAGE, UL_SHEET, UL_SYMBOL

    Konstanten

    FONT_VECTOR Vector-Font
    FONT_PROPORTIONAL Proportional-Font
    FONT_FIXED Fixed-Font

    ALIGN_BOTTOM_LEFT unten/links ausgerichtet
    ALIGN_BOTTOM_CENTER unten/mittig ausgerichtet
    ALIGN_BOTTOM_RIGHT unten/rechts ausgerichtet
    ALIGN_CENTER_LEFT mittig/links ausgerichtet
    ALIGN_CENTER zentriert
    ALIGN_CENTER_RIGHT mittig/rechts ausgerichtet
    ALIGN_TOP_LEFT oben/links ausgerichtet
    ALIGN_TOP_CENTER oben/mittig ausgerichtet
    ALIGN_TOP_RIGHT oben/rechts ausgerichtet

    Anmerkung

    Das Loop-Member wires() greift immer auf die individuellen Wires, aus denen der Text im Vektor-Font zusammengesetzt wird, zu. Auch dann, wenn der aktuelle Font nicht FONT_VECTOR ist.

    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.

    Beispiel

    board(B) {
      B.texts(T) {
        printf("Text: %s\n", T.value);
        }
      }
    

    UL_VARIANTDEF

    Data members
    name string
    Siehe auch
    UL_VARIANT, UL_SCHEMATIC, UL_BOARD, variant()

    Beispiel

    schematic(SCH) {
      printf("Defined assembly variants:\n");
      SCH.variantdefs(VD) {
        printf("\t'%s'\n", VD.name);
        }
      printf("\n");
      printf("Part\tVariantdef\tValue\tTechn.\tPopulated\n");
      SCH.parts(P) {
        printf("%s\t%s\t%s\t%s\t%s\n", P.name, "default", P.value, P.device.activetechnology, "yes");
        P.variants(V) {
          printf("%s\t%s\t%s\t%s\t%s\n", P.name, V.variantdef.name, V.value, V.technology, V.populate ? "yes" : "no");
          }
        }
      }
    

    UL_VARIANT

    Data members
    populate int (0=do not populate, 1=populate)
    value string
    technology string
    variantdef UL_VARIANTDEF
    Siehe auch
    UL_VARIANTDEF, UL_PART, variant()

    Beispiel

    schematic(SCH) {
      printf("Defined assembly variants:\n");
      SCH.variantdefs(VD) {
        printf("\t'%s'\n", VD.name);
        }
      printf("\n");
      printf("Part\tVariantdef\tValue\tTechn.\tPopulated\n");
      SCH.parts(P) {
        printf("%s\t%s\t%s\t%s\t%s\n", P.name, "default", P.value, P.device.activetechnology, "yes");
        P.variants(V) {
          printf("%s\t%s\t%s\t%s\t%s\n", P.name, V.variantdef.name, V.value, V.technology, V.populate ? "yes" : "no");
          }
        }
      }
    

    UL_VIA

    Data members
    diameter[layer] int
    drill int
    drillsymbol int
    end int
    flags int (VIA_FLAG_...)
    shape[layer] int (VIA_SHAPE_...)
    start int
    x, y int (Mittelpunkt)
    Siehe auch
    UL_SIGNAL

    Konstanten

    VIA_FLAG_STOP Lötstopmaske immer generieren

    VIA_SHAPE_SQUARE square
    VIA_SHAPE_ROUND round
    VIA_SHAPE_OCTAGON octagon

    Anmerkung

    Der Durchmesser und die Form des Vias hängen davon ab für welchen Layer es gezeichnet werden soll, denn es können in den Design Rules unterschiedliche Werte definiert werden. Gibt man einen der Layer LAYER_TOP...LAYER_BOTTOM, LAYER_TSTOP oder LAYER_BSTOP als Index für diameter oder shape an, wird das Via entsprechend den Vorgaben aus den Design Rules berechnet. Wird LAYER_VIAS angegeben, wird der ursprüngliche Wert mit dem das Via definiert wurde, verwendet.

    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.

    Beispiel

    board(B) {
      B.signals(S) {
        S.vias(V) {
          printf("Via: (%f %f)\n", u2mm(V.x), u2mm(V.y));
          }
        }
      }
    

    UL_WIRE

    Data members
    arc UL_ARC
    cap int (CAP_...)
    curve real
    layer int
    style int (WIRE_STYLE_...)
    width int
    x1, y1 int (Anfangspunkt)
    x2, y2 int (Endpunkt)
    Loop members
    pieces() UL_WIRE (siehe Anmerkung)
    Siehe auch
    UL_BOARD, UL_PACKAGE, UL_SEGMENT, UL_SHEET, UL_SIGNAL, UL_SYMBOL, UL_ARC

    Konstanten

    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

    Wire Style

    Bei einem UL_WIRE mit anderem style als WIRE_STYLE_CONTINUOUS, kann über das Loop-Member pieces() auf die individuellen Teile, die z. B. eine gestrichelte Linie darstellen, zugegriffen werden. Wenn pieces() für UL_WIRE mit WIRE_STYLE_CONTINUOUS aufgerufen wird, erhält man ein Segment, das genau dem original UL_WIRE entspricht. Das Loop-Member pieces() kann nicht von UL_WIRE aus aufgerufen werden, wenn dieser selbst schon über pieces() aufgerufen wurde (das würde eine unendliche Schleife verursachen).

    Kreisbögen auf Wire-Ebene

    Kreisbögen sind zunächst einfach nur Wires, mit einigen zusätzlichen Eigenschaften. In erster Näherung werden Kreisbögen genauso behandelt wie Wires, das heisst sie haben einen Anfangs- und Endpunkt, eine Breite und einen Linientyp. Hinzu kommen auf Wire-Ebene die Parameter cap und curve. cap gibt an ob die Kreisbogen-Enden rund oder flach sind, und curve bestimmt die "Krümmung" des Kreisbogens. 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.

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

    Beispiel

    board(B) {
      B.wires(W) {
        printf("Wire: (%f %f) (%f %f)\n",
               u2mm(W.x1), u2mm(W.y1), u2mm(W.x2), u2mm(W.y2));
        }
      }
    

    Definitionen

    Konstanten, Variablen und Funktionen müssen definiert werden, bevor sie in einem User-Language-Programm verwendet werden können.

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

    Konstanten kann man auch mit bestimmten Werten initialisieren, wie in

    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.

    Beispiele

    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
    Die Members von Elementen eines Arrays von Objekt-Typen können nicht direkt angesprochen werden:
    UL_SIGNAL signals[];
    ...
    UL_SIGNAL s = signals[0];
    printf("%s", s.name);
    

    Funktions-Definitionen

    Sie können Ihre eigenen User-Language-Funktionen schreiben und sie genau so aufrufen wie
    Builtin-Functions.

    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.

    Die spezielle Funktion main()

    Wenn Ihr User-Language-Programm eine Funktion namens main() enthält, wird diese Funktion explizit als Hauptfunktion aufgerufen. Ihr Rückgabewert ist der Rückgabewert des Programms.

    Kommandozeilen-Argumente sind für das Programm über die globalen Builtin-Variablen argc und argv verfügbar.

    Beispiel

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

    Operatoren

    Die folgende Tabelle listet alle User-Language-Operatoren in der Reihenfolge ihrer Priorität auf (Unary hat die höchste Priorität, Comma die niedrigste):

    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

    Logische Operatoren

    Logische Operatoren arbeiten mit Ausdrücken von jedem Datentyp.

    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

    Evaluation-Operatoren

    Evaluation-Operatoren werden verwendet, um Ausdrücke auszuwerten, die auf einer Bedingung basieren, oder um eine Sequenz von Ausdrücken zu gruppieren und sie als einen Ausdruck auszuwerten.

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

    Beispiele

    a + b
    c++
    m << 1
    

    Zuweisungs-Ausdruck

    Ein Zuweisungs-Ausdruck besteht aus einer Variablen auf der linken Seite eines
    Zuweisungsoperators und einem Ausdruck auf der rechten Seite.

    Beispiele

    a = x + 42
    b += c
    s = "Hello"
    

    String-Ausdruck

    Ein String-Ausdruck ist jede Kombination von
    string- und char- Operanden und einem String-Operator.

    Beispiele

    s + ".brd"
    t + 'x'
    

    Komma-Ausdruck

    Ein Komma-Ausdruck ist eine Sequenz von Ausdrücken, die mit dem
    Komma-Operator abgegrenzt werden.

    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.

    Beispiel

    i++, j++, k++
    

    Bedingter Ausdruck

    Ein bedingter Ausdruck verwendet den
    Conditional-Operator, um eine Entscheidung innerhalb eines Ausdrucks zu treffen.

    Beispiel

    int a;
    // ...code that calculates 'a'
    string s = a ? "True" : "False";
    

    Funktionsaufruf

    Ein Funktionsaufruf transferiert den Programmfluss zu einer
    benutzerdefinierten Funktion oder einer Builtin-Function. Die formalen Parameter, die in der Funktions-Definition definiert sind, werden ersetzt durch die Werte der Ausdrücke, die als aktuelle Argumente des Funktionsaufrufs dienen.

    Beispiel

    int p = strchr(s, 'b');
    

    Statements

    Ein Statement kann folgendes sein:
    Statements spezifizieren die Programmausführung. Wenn keine Control-Statements vorhanden sind, werden Statements der Reihe nach in der Reihenfolge ihres Auftretens in der ULP-Datei ausgeführt.

    Compound-Statement (Verbundanweisung)

    Ein Compound-Statement (auch bekannt als Block) ist eine Liste (kann auch leer sein) von Statements in geschweiften Klammern ({}). Syntaktisch kann ein Block als einzelnes Statement angesehen werden, aber er steuert auch den Gültigkeitsbereich von Identifiern. Ein
    Identifier, der innerhalb eines Blocks deklariert wird, gilt ab der Stelle, an der er definiert wurde, bis zur schließenden geschweiften Klammer.

    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.

    Control-Statements (Steueranweisungen)

    Control-Statements werden verwendet, um den Programmfluss zu steuern.

    Iteration-Statements sind

    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.

    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.

    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.

    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:
    1. Wenn es einen Initialisierungs-Ausdruck init gibt, wird er ausgeführt.
    2. Wenn es einen test-Ausdruck gibt, wird er ausgeführt. Wenn das Ergebnis ungleich null ist (oder wenn es keinen test-Ausdruck gibt), wird das statement ausgeführt.
    3. Wenn es einen inc-Ausdruck gibt, wird er ausgeführt.
    4. Schließlich wird die Programmsteuerung wieder an Schritt 2 übergeben.
    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.

    Der Initialisierungs-Ausdruck init initialisiert normalerweise einen oder mehrere Schleifenzähler. Er kann auch eine neue Variable als Schleifenzähler definieren. Eine solche Variable ist bis zum Ende des Blocks gültig, welcher die for-Schleife umgibt.

    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.

    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

    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.

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

    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.

    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.

    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.

    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.

    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:

    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
    EAGLE_PATH ein string, der den vollständigen Pfad der ausführbaren EAGLE-Programmdatei enthält
    EAGLE_DIR ein string, der das Verzeichnis der EAGLE Installation enthält ($EAGLEDIR)
    EAGLE_HOME ein string, der das Home-Verzeichnis des Benutzers beim Start von EAGLE enthält ($HOME)
    eagle_epf ein string, der den vollständigen Pfad des gerade benutzten eagle.epf enthält
    OS_SIGNATURE ein string, der eine Signatur des Betriebssystems enthält (z.B.: Mac..., Windows... oder Linux)
    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[]

    Builtin Variablen

    Builtin-Variablen werden verwendet, um zur Laufzeit Informationen zu erhalten.

    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)

    Builtin-Functions

    Builtin-Functions werden für spezielle Aufgaben benötigt, z.B. formatierte Strings drucken, Daten-Arrays sortieren o.ä.

    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:

    Alphabetische Auflistung aller Builtin-Functions:

    Character-Funktionen

    Mit Character-Funktionen manipuliert man einzelne Zeichen.

    Die folgenden Character-Funktionen sind verfügbar:

    is...()

    Funktion
    Prüfen, ob ein Zeichen in eine bestimmte Kategorie fällt.
    Syntax
    int isalnum(char c);
    int isalpha(char c);
    int iscntrl(char c);
    int isdigit(char c);
    int isgraph(char c);
    int islower(char c);
    int isprint(char c);
    int ispunct(char c);
    int isspace(char c);
    int isupper(char c);
    int isxdigit(char c);
    Rückgabewert
    Die is...-Funktionen liefern einen Wert ungleich null, wenn das Zeichen in die Kategorie fällt, sonst null.

    Character-Kategorien

    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)

    Beispiel

    char c = 'A';
    if (isxdigit(c))
       printf("%c is hex\n", c);
    else
       printf("%c is not hex\n", c);
    

    to...()

    Funktion
    Buchstaben in Groß- oder Kleinbuchstaben umwandeln.
    Syntax
    char tolower(char c);
    char toupper(char c);
    Rückgabewert
    Die tolower-Funktion gibt den konvertierten Buchstaben zurück, wenn c ein Großbuchstabe ist. Alle anderen Zeichen werden unverändert zurückgegeben.
    Die toupper-Funktion gibt den konvertierten Buchstaben zurück, wenn c ein Kleinbuchstabe ist. Alle anderen Zeichen werden unverändert zurückgegeben.
    Siehe auch
    strupr, strlwr

    Datei-Funktionen

    Datei-Funktionen behandeln Datei-Namen, -Größen und -Zeitstempel.

    Folgende Datei-Funktionen sind verfügbar:

    Weitere Informationen über Ausgaben in eine Datei, finden Sie unter output().

    fileerror()

    Funktion
    Zeigt den Status von I/O-Operationen.
    Syntax
    int fileerror();
    Rückgabewert
    Gibt die fileerror-Funktion 0 zurück, ist alles in Ordnung.
    Siehe auch
    output, printf, fileread

    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.

    Beispiel

    fileerror();
    output("file.txt", "wt") {
      printf("Test\n");
      }
    if (fileerror())
       exit(1);
    

    fileglob()

    Funktion
    Sucht in einem Verzeichnis.
    Syntax
    int fileglob(string &array[], string pattern);
    Rückgabewert
    Die Funktion fileglob liefert die Anzahl der Einträge, die in array kopiert wurden.
    Siehe auch
    dlgFileOpen(), dlgFileSave()

    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.

    Hinweis für Windows-Anwender

    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.

    Beispiel

    string a[];
    int n = fileglob(a, "*.brd");
    

    Dateinamens-Funktionen

    Funktion
    Datei-Namen in seine Einzelteile aufspalten.
    Syntax
    string filedir(string file);
    string fileext(string file);
    string filename(string file);
    string filesetext(string file, string newext);
    Rückgabewert
    filedir liefert das Directory von file (einschließlich Laufwerksbuchstaben unter Windows).
    fileext liefert die Extension von file.
    filename liefert den File-Namen von file (einschließlich Extension).
    filesetext liefert file mit Extension auf newext gesetzt.
    Siehe auch
    Datei-Daten-Funktionen

    Beispiel

    if (board) board(B) {
      output(filesetext(B.name, ".out")) {
        ...
        }
      }
    

    Datei-Daten-Funktionen

    Funktion
    Holt den Timestamp und die Größe einer Datei.
    Syntax
    int filesize(string filename);
    int filetime(string filename);
    Rückgabewert
    filesize liefert die Größe (in Byte) der Datei.
    filetime liefert den Timestamp der Datei in Sekunden. Das Format ist kompatibel mit den
    Zeit-Funktionen.
    Siehe auch time, Dateinamens-Funktionen

    Beispiel

    board(B)
      printf("Board: %s\nSize: %d\nTime: %s\n",
             B.name, filesize(B.name),
             t2string(filetime(B.name)));
    

    Datei-Einlese-Funktionen

    Datei-Einlese-Funktionen werden verwendet um Daten von Dateien einzulesen.

    Folgendes Datei-Einlesen ist möglich:

    Siehe output() für Informationen zum Thema 'In eine Datei schreiben'.

    fileread()

    Funktion
    Liest Daten aus einer Datei aus.
    Syntax
    int fileread(dest, string file);
    Rückgabewert
    fileread liefert die Anzahl der Objekte, die aus einer Datei ausgelesen wurden.
    Die tatsächliche Bedeutung des Rückgabewerts hängt vom dest-Typ ab.
    Siehe auch
    lookup, strsplit, fileerror

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

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

    Beispiel

    char b[];
    int nBytes = fileread(b, "data.bin");
    string lines[];
    int nLines = fileread(lines, "data.txt");
    string text;
    int nChars = fileread(text, "data.txt");
    

    Mathematische Funktionen

    Mathematische Funktionen werden dazu verwendet, matematische Operationen auszuführen.

    Die folgenden mathematischen Funktionen sind verfügbar:

    Fehlermeldungen

    Wenn die Argumente eines mathematischen Funktionsaufrufs zu einem Fehler führen, zeigen die Fehlermeldungen die aktuellen Werte der Argumente. Deshalb führen die Statements
    real x = -1.0;
    real r = sqrt(2 * x);
    
    zur Fehlermeldung
    Invalid argument in call to 'sqrt(-2)'
    

    Absolutwert-, Maximum- und Minimum-Funktion

    Funktion
    Absolutwert-, Maximum- und Minimum-Funktion.
    Syntax
    type abs(type x);
    type max(type x, type y);
    type min(type x, type y);
    Rückgabewert
    abs liefert den absoluten Wert von x.
    max liefert das Maximum von x und y.
    min liefert das Minimum von x und y.

    Der Return-Typ dieser Funktionen ist identisch mit dem größeren Typ der Argumente. type muss char, int oder real sein.

    Beispiel

    real x = 2.567, y = 3.14;
    printf("The maximum is %f\n", max(x, y));
    

    Rundungs-Funktionen

    Funktion
    Rundungs-Funktionen.
    Syntax
    real ceil(real x);
    real floor(real x);
    real frac(real x);
    real round(real x);
    real trunc(real x);
    Rückgabewert
    ceil liefert den kleinsten Integer-Wert nicht kleiner als x.
    floor liefert den größten Integer-Wert nicht größer als x.
    frac liefert den Dezimalbruch von x.
    round liefert x gerundet auf den nächsten Integer-Wert.
    trunc liefert den ganzzahligen Teil von x.

    Beispiel

    real x = 2.567;
    printf("The rounded value of %f is %f\n", x, round(x));
    

    Trigonometrische Funktionen

    Funktion
    Trigonometrische Funktionen.
    Syntax
    real acos(real x);
    real asin(real x);
    real atan(real x);
    real cos(real x);
    real sin(real x);
    real tan(real x);
    Rückgabewert
    acos liefert den arc-cosinus von x.
    asin liefert den arc-sinus von x.
    atan liefert den arc-tangens von x.
    cos liefert den cosinus von x.
    sin liefert den sinus von x.
    tan liefert den tangens von x.

    Konstanten

    PI der Wert von "pi" (3.14...)

    Anmerkung

    Winkelangaben erfolgen in rad (Bogenmaß).

    Beispiel

    real x = PI / 2;
    printf("The sine of %f is %f\n", x, sin(x));
    

    Exponential-Funktionen

    Funktion
    Exponential-Funktionen.
    Syntax
    real exp(real x);
    real log(real x);
    real log10(real x);
    real pow(real x, real y);
    real sqrt(real x);
    Rückgabewert
    exp liefert e hoch x.
    log liefert den natürlichen Logarithmus von x.
    log10 liefert den Zehnerlogarithmus von x.
    pow liefert den Wert von x hoch y.
    sqrt liefert die Quadratwurzel von x.

    Beispiel

    real x = 2.1;
    printf("The square root of %f is %f\n", x, sqrt(x));
    printf("The 3rd root of %f is %f\n", x, pow(x, 1.0/3));
    

    Sonstige Funktionen

    Sonstige Funktionen werden für weitere Aufgaben benötigt.

    Die folgenden sonstigen Funktionen sind verfügbar:

    Konfigurations-Parameter

    Funktion
    Konfigurations-Parameter abspeichern und laden.
    Syntax
    string cfgget(string name[, string default]);
    void cfgset(string name, string value);
    Rückgabewert
    cfgget liefert den Wert des Parameters, der unter dem Namen name gespeichert ist. Wurde kein solcher Parameter gespeichert, so wird der optionale Standardwert default geliefert (bzw. ein leerer String, falls kein default angegeben wurde).
    Die cfgget-Funktion liefert den Wert, der mit einem vorangegangenen Aufruf von cfgset() gespeichert wurde.

    Die cfgset-Funktion setzt den Parameter mit dem Namen name auf den Wert value.

    Gültige Zeichen für name sind 'A'-'Z', 'a'-'z', '0'-'9', '.' and '_'.
    Parameternamen unterscheiden Groß-/Kleinschreibung.

    Die Parameter werden in der eaglerc-Datei des Benutzers gespeichert. Um sicherzustellen, dass verschiedene User Language Programme sich nicht gegenseitig die Parameter überscheiben, falls sie die gleichen Parameternamen verwenden, wird empfohlen, dem Parameternamen den Namen des ULPs voranzustellen. Beispielsweise könnte ein ULP namens mytool.ulp, welches einen Parameter namens MyParam verwendet, diesen unter dem Namen

    mytool.MyParam
    
    speichern.

    Da die Konfigurations-Parameter in der eaglerc-Datei gespeichert werden, welche auch alle anderen benutzerspezifischen EAGLE-Parameter enthält, können auch die EAGLE-Parameter mit cfgget() und cfgset() angesprochen werden. Um sicherzustellen, dass keine ULP-Parameter mit etwaigen EAGLE-Parametern kollidieren, muß den EAGLE-Parametern "EAGLE:" vorangestellt werden, wie in

    EAGLE:Option.XrefLabelFormat
    
    Beachten Sie bitte, dass es keine Dokumentation aller internen EAGLE-Parameter und deren Speicherung in der eaglerc-Datei gibt. Seien Sie auch besonders vorsichtig, wenn Sie solche Parameter verändern! Wie bei der eaglerc-Datei selbst gilt auch hier, dass Sie diese Parameter nur manipulieren sollten, wenn Sie sich darüber im Klaren sind, was Sie tun! Bei einigen EAGLE-Parametern kann ein Neustart von EAGLE erforderlich sein, damit Änderungen wirksam werden.

    Die User Language Parameter werden in der eaglerc-Datei mit einem vorangestellten "ULP:" gespeichert. Daher darf dieser Präfix optional auch den User Language Parameternamen vorangestellt werden, wie in

    ULP:mytool.MyParam
    

    Beispiel

    string MyParam = cfgget("mytool.MyParam", "SomeDefault");
    MyParam = "OtherValue";
    cfgset("mytool.MyParam", MyParam);
    

    country()

    Funktion
    Liefert den Ländercode des verwendeten Systems.
    Syntax
    string country();
    Rückgabewert
    country liefert einen String bestehend aus zwei Großbuchstaben, der das auf dem aktuellen System eingestellte Land angibt. Falls sich diese Einstellung nicht ermitteln lässt, wird der Standardwert "US" zurückgegeben.
    Siehe auch
    language

    Example

    dlgMessageBox("Your country code is: " + country());
    

    exit()

    Funktion
    Beendet ein User-Language-Programm.
    Syntax
    void exit(int result);
    void exit(string command);
    Siehe auch
    RUN

    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.

    Konstanten

    EXIT_SUCCESS Rückgabewert für erfolgreiche Programmausführung (Wert 0)
    EXIT_FAILURE Rückgabewert für fehlerhafte Programmausführung (Wert -1)

    fdlsignature()

    Funktion
    Berechnet eine digitale Signatur für Premier Farnells Design Link.
    Syntax
    string fdlsignature(string s, string key);
    Die fdlsignature-Funktion wird benutzt für die Berechnung einer digitalen Signatur bei der Verwendung von Premier Farnells Design Link Interface.

    language()

    Funktion
    Liefert den Sprachcode des verwendeten Systems.
    Syntax
    string language();
    Rückgabewert
    language liefert einen String bestehend aus zwei Kleinbuchstaben, der die auf dem aktuellen System verwendete Sprache angibt. Falls sich diese Einstellung nicht ermitteln lässt, wird der Standardwert "en" zurückgegeben.
    See also
    country

    Die language-Funktion kann dazu benutzt werden, in einem ULP unterschiedliche Texte zu verwenden, je nachdem welche Sprache das aktuelle System verwendet.

    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.

    Beispiel

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

    lookup()

    Funktion
    Sucht Daten in einem String-Array.
    Syntax
    string lookup(string array[], string key, int field_index[, char separator]);
    string lookup(string array[], string key, string field_name[, char separator]);
    Rückgabewert
    lookup liefert den Wert des Feldes, das durch field_index oder field_name markiert wird.
    Existiert dieses Feld nicht oder wird kein passender String für key gefunden, kommt ein leerer String zurück.
    Siehe auch
    fileread, strsplit

    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
    

    Beispiel

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

    palette()

    Funktion
    Liefert Farbpaletten-Information.
    Syntax
    int palette(int index[, int type]);
    Rückgabewert
    Die palette-Funktion liefert einen ARGB-Wert als Integer-Zahl der Form 0xaarrggbb, oder den Typ der momentan verwendeten Palette (abhängig vom Wert von index).
    Die palette-Funktion liefert den ARGB-Wert der Farbe mit dem gegebenen index (welcher im Bereich 0..PALETTE_ENTRIES-1 liegen kann). Falls type nicht angegeben ist (oder den Wert -1 hat) wird die Palette verwendet, die dem aktuellen Editor-Fenster zugewiesen ist. Ansonsten gibt type an, welche Palette verwendet werden soll (PALETTE_BLACK, PALETTE_WHITE oder PALETTE_COLORED).

    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.

    Konstanten

    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)

    sleep()

    Funktion
    Pause im User-Language-Programm einlegen.
    Syntax
    void sleep(int seconds);
    Siehe auch
    time()

    Die sleep-Funktion macht für seconds Sekunden eine Pause im User-Language-Programm.

    sort()

    Funktion
    Sortiert ein Array oder einen Satz von Arrays.
    Syntax
    void sort(int number, array1[, array2,...]);
    Die sort-Funktion sortiert entweder direkt ein array1, oder sie sortiert einen Satz von Arrays (beginnend mit array2), wobei array1 ein int-Array ist, das als Pointer-Array verwendet wird.

    In jedem Fall definiert das Argument number die Zahl der Einträge im Array oder in den Arrays.

    Einzelnes Array sortieren

    Wenn die sort-Funktion mit einem einzelnen Arrray aufgerufen wird, wird dieses Array direkt sortiert, wie im folgenden Beispiel:
    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]);
    

    Einen Satz von Arrays sortieren

    Wenn die sort-Funktion mit mehr als einem Array aufgerufen wird, muss das erste Array ein int-Array sein, während alle anderen Arrays von jedem Typ sein können. Sie enthalten die zu sortierenden Daten. Das folgende Beispiel zeigt, wie das erste Array als Pointer verwendet wird:
    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()

    Funktion
    Zeigt eine Statusmeldung in der Statuszeile an.
    Syntax
    void status(string message);
    Siehe auch
    dlgMessageBox()

    Die status-Funktion zeigt die angegebene message in der Statuszeile des Editor-Fensters an, in dem das ULP läuft.

    system()

    Funktion
    Führt ein externes Programm aus.
    Syntax
    int system(string command);
    Rückgabewert
    Die system-Funktion liefert den "Exit Status" des Befehls zurück. Dieser ist normalerweise 0 wenn alles gut gegangen ist, und ungleich 0 wenn ein Fehler aufgetreten ist.
    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).

    Ausführung im Hintergrund

    Die system-Funktion wartet bis das angegebene Programm beendet ist. Dies ist sinnvoll für Programme, die nur wenige Sekunden laufen, oder die Aufmerksamkeit des Benutzers komplett an sich ziehen.


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

    Beispiel

    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!

    Falls Sie Kontrolle darüber haben wollen, welche externen Programme tatsächlich ausgeführt werden, können Sie sich eine Hilfsfunktion schreiben, welche den Benutzer vor der Ausführung des externen Programms um Bestätigung bittet, wie etwa

    int MySystem(string command)
    {
      if (dlgMessageBox("!Ok to execute the following command?<p><tt>" + command + "</tt>", "&Yes", "&No") == 0)
         return system(command);
      return -1;
    }
    int result = MySystem("simulate -f filename");
    

    Einheiten-Konvertierung

    Funktion
    Konvertiert interne Einheiten.
    Syntax
    real u2inch(int n);
    real u2mic(int n);
    real u2mil(int n);
    real u2mm(int n);
    int inch2u(real n);
    int mic2u(real n);
    int mil2u(real n);
    int mm2u(real n);
    Rückgabewert
    u2inch liefert den Wert von n in Inch.
    u2mic liefert den Wert von n in Micron (1/1000mm).
    u2mil liefert den Wert von n in Mil (1/1000inch).
    u2mm liefert den Wert von n in Millimeter.
    inch2u liefert den Wert von n (der in Inch vorliegt) als interne Einheiten.
    mic2u liefert den Wert von n (der in Micron vorliegt) als interne Einheiten.
    mil2u liefert den Wert von n (der in Mil vorliegt) als interne Einheiten.
    mm2u liefert den Wert von n (der in Millimeter vorliegt) als interne Einheiten.
    Siehe auch
    UL_GRID

    EAGLE speichert alle Koordinaten und Größen als int-Werte mit einer Auflösung von 1/320000mm (0.003125µ). Die oben angegebenen Einheiten-Konvertier-Funktionen können dazu verwendet werden, die internen Einheiten in die gewünschten Maßeinheiten umzuwandeln und umgekehrt.

    Beispiel

    board(B) {
      B.elements(E) {
        printf("%s at (%f, %f)\n", E.name,
               u2mm(E.x), u2mm(E.y));
        }
      }
    

    Netzwerk-Funktionen

    Netzwerk-Funktionen dienen der Kommunikation mit entfernten Rechnern im Internet.

    Die folgenden Netzwerk-Funktionen sind verfügbar:

    neterror()

    Funktion
    Liefert die Fehlermeldung der zuletzt ausgeführten Netzwerk-Funktion.
    Syntax
    string neterror(void);
    Rückgabewert
    neterror liefert eine textuelle Meldung, die den Fehler beschreibt, der bei der zuletzt verwendeten Netzwerk-Funktion aufgetreten ist. Falls kein Fehler aufgetreten ist, wird ein leerer String zurückgegeben.
    Siehe auch
    netget, netpost

    Die neterror-Funktion sollte nach jeder Verwendung einer der anderen Netzwerk-Funktionen aufgerufen werden, deren Rückgabewert negativ war und somit einen Fehler angezeigt hat. Der Rückgabewert von neterror ist ein textueller String, der dem Benutzer präsentiert werden kann.

    Bei Fehlern im Zusammenhang mit SSL-Verbindungen (HTTPS) beachten Sie auch den Hinweis in netget.

    Beispiel

    string Result;
    if (netget(Result, "http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them") >= 0) {
       // process Result
       }
    else
       dlgMessageBox(neterror());
    

    netget()

    Funktion
    Führt eine GET-Anforderung auf dem Netzwerk aus.
    Syntax
    int netget(dest, string url[, int timeout]);
    Rückgabewert
    netget liefert die Anzahl der Objekte, die vom Netzwerk gelesen wurden. Die tatsächliche Bedeutung des Rückgabewerts hängt vom dest-Typ ab.
    Im Fehlerfall wird ein negativer Wert zurückgegeben und
    neterror() kann aufgerufen werden, um dem Benutzer eine Fehlermeldung anzuzeigen.
    Siehe auch netpost, neterror, fileread

    Die netget-Funktion schickt den angegebenen url an das Netzwerk und speichert das Ergebnis in der Variablen dest. Falls timeout Sekunden lang keine Netzwerkaktivität erfolgt, wird die Verbindung abgebrochen. Der Standardwert hierfür ist 20 Sekunden.
    Der url muß das zu verwendende Protokoll enthalten (HTTP, HTTPS oder FTP) und kann Parameter der Form Name=Wert enthalten, wie in

    http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them
    ftp://ftp.cadsoft.de/eagle/userfiles/README
    
    Falls für den Zugriff auf den fernen Rechner eine Benutzerkennung und ein Passwort notwendig ist, kann dieses in folgender Form angegeben werden:
    https://userid:password@www.secret-site.com/...
    
    Wenn dest ein Character-Array ist, wird das Ergebnis als rohe Binärdaten behandelt und der Rückgabewert entspricht der Anzahl der Bytes, die in dem Character-Array gespeichert wurden.

    Wenn dest ein String-Array ist, wird das Ergebnis als Text behandelt (eine Zeile pro Array-Member) und der Rückgabewert entspricht der Anzahl der Zeilen, die in dem Array gespeichert wurden. Newline-Zeichen werden entfernt.

    Wenn dest ein String ist, wird das gesamte Ergebnis in diesem String gespeichert und der Rückgabewert entspricht der Länge des Strings. Beachten Sie, dass im Falle von binären Daten das Ergebnis beim ersten Auftreten eines Bytes mit dem Wert 0x00 abgeschnitten wird.

    Falls Sie einen Proxy benutzen müssen, um das Internet mit HTTP bzw. HTTPS anzusprechen, so können Sie diesen im "Konfigurieren"-Dialog unter "Hilfe/Auf Update prüfen" im Control Panel konfigurieren.

    SSL-Verbindungen

    Für SSL-Verbindungen (Anfrage per HTTPS) sind Zertifikate erforderlich, die auf manchen Systemen fehlen können oder deren Gültigkeit abgelaufen sein kann. Die Verbindung scheitert dann mit entsprechender Fehlermeldung, die Sie mit neterror() abfragen können.
    Anhand der Fehlermeldung sollte es möglich zu sein, fehlende Zertifikate nachzuinstallieren oder zu aktualisieren und die Verbindung so zum Laufen zu bringen. Wie dies durchzuführen ist, hängt von Ihrem System ab (In Windows z.B. unter Systemsteuerung/Internetoptionen usw.).

    Beispiel

    string Result;
    if (netget(Result, "http://web.cadsoft.de/cgi-bin/http-test?see=me&hear=them") >= 0) {
       // process Result
       }
    else
       dlgMessageBox(neterror());
    

    netpost()

    Funktion
    Führt eine POST-Anforderung auf dem Netzwerk aus.
    Syntax
    int netpost(dest, string url, string data[, int timeout[, string content_type] ]);
    Rückgabewert
    netpost liefert die Anzahl der Objekte, die vom Netzwerk gelesen wurden. Die tatsächliche Bedeutung des Rückgabewerts hängt vom dest-Typ ab.
    Im Fehlerfall wird ein negativer Wert zurückgegeben und
    neterror() kann aufgerufen werden, um dem Benutzer eine Fehlermeldung anzuzeigen.
    Siehe auch netget, neterror, fileread

    Die netpost-Funktion schickt die in data angegebenen Daten an den angegebenen url im Netzwerk und speichert das Ergebnis in der Variablen dest. Falls timeout Sekunden lang keine Netzwerkaktivität erfolgt, wird die Verbindung abgebrochen. Der Standardwert hierfür ist 20 Sekunden.
    Wird content_type angegeben, so überschreibt das den Standardwert von of "text/html; charset=utf-8".
    Der url muß das zu verwendende Protokoll enthalten (HTTP oder HTTPS).

    Falls für den Zugriff auf den fernen Rechner eine Benutzerkennung und ein Passwort notwendig ist, kann dieses in folgender Form angegeben werden:

    https://userid:password@www.secret-site.com/...
    
    Wenn dest ein Character-Array ist, wird das Ergebnis als rohe Binärdaten behandelt und der Rückgabewert entspricht der Anzahl der Bytes, die in dem Character-Array gespeichert wurden.

    Wenn dest ein String-Array ist, wird das Ergebnis als Text behandelt (eine Zeile pro Array-Member) und der Rückgabewert entspricht der Anzahl der Zeilen, die in dem Array gespeichert wurden. Newline-Zeichen werden entfernt.

    Wenn dest ein String ist, wird das gesamte Ergebnis in diesem String gespeichert und der Rückgabewert entspricht der Länge des Strings. Beachten Sie, dass im Falle von binären Daten das Ergebnis beim ersten Auftreten eines Bytes mit dem Wert 0x00 abgeschnitten wird.

    Falls Sie einen Proxy benutzen müssen, um das Internet mit HTTP bzw. HTTPS anzusprechen, so können Sie diesen im "Konfigurieren"-Dialog unter "Hilfe/Auf Update prüfen" im Control Panel konfigurieren.

    Falls Sie mit SSL-Verbindungen (HTTPS) auf Probleme stoßen sollten, beachten Sie den Hinweis in netget

    Beispiel

    string Data = "see=me\nhear=them";
    string Result;
    if (netpost(Result, "http://web.cadsoft.de/cgi-bin/http-test", Data) >= 0) {
       // process Result
       }
    else
       dlgMessageBox(neterror());
    

    Print-Funktionen

    Print-Funktionen dienen zur Ausgabe formatierter Strings.

    Die folgenden Print-Funktionen sind verfügbar:

    printf()

    Funktion
    Schreibt formatiere Ausgaben in eine Datei.
    Syntax
    int printf(string format[, argument, ...]);
    Rückgabewert
    Die printf-Funktion liefert die Zahl der Zeichen, die in die vom letzten output-Statement geöffnete Datei geschrieben wurden.

    Wenn ein Fehler auftritt, liefert printf -1.

    Siehe auch sprintf, output, fileerror

    Format-String

    Der Format-String steuert, wie die Argumente konvertiert, formatiert und ausgegeben werden. Es müssen genau so viele Argumente vorhanden sein, wie für das Format erforderlich sind. Die Zahl und der Typ der Argumente werden für jedes Format geprüft, und wenn sie nicht den Anforderungen entsprechen, wird eine Fehlermeldung ausgegeben.

    Der Format-String enthält zwei Objekt-Typen - einfache Zeichen und Format-Specifier:

    • Einfache Zeichen werden direkt ausgegeben
    • Format-Specifier holen Argumente von der Argument-Liste und formatieren sie

    Format-Specifier

    Ein Format-Specifier hat folgende Form:

    % [flags] [width] [.prec] type

    Jede Format-Spezifizierung beginnt mit dem Prozentzeichen (%). Nach dem % kommt folgendes, in dieser Reihenfolge:

    • optional eine Folge von Flag-Zeichen, [flags]
    • optional ein Breiten-Specifier, [width]
    • optional ein Präzisions-Specifier, [.prec]
    • das Konvertiertyp-Zeichen, type

    Konvertiertyp-Zeichen

    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

    Flag-Zeichen

    Die folgenden Flag-Zeichen können in jeder Kombination und Reihenfolge auftreten.

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

    Width-Specifier

    Der Width-Specifier setzt die minimale Feldbreite für einen Ausgabewert.

    Die Breite wird entweder direkt mit einem Dezimalstellen-String oder indirekt mit einem Stern (*) gesetzt. Wenn Sie * verwenden, legt das Argument, das dem (mit diesem Format formatierten) Argument im Aufruf vorhergeht, (und 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.

    Präzisions-Specifier

    Ein Präzisions-Specifier beginnt immer mit einem Punkt (.), um ihn von einem vorangehenden Width-Specifier zu trennen. Dann wird, wie bei "Width", die Präzision entweder direkt mit einem Dezimalstellen-String oder indirekt mit einem Stern (*) angegeben. Wenn Sie * verwenden, legt das Argument, das dem (mit diesem Format formatierten) Argument im Aufruf vorhergeht, (und vom Typ int sein muss) die Präzision fest.

    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.

    Default-Präzisionswerte

    douxX 1
    eEf 6
    gG alle signifikanten Stellen
    c keine Auswirkung
    s gesamten String ausgeben

    Wie die Präzisionsangabe (.n) die Konvertierung beeinflusst

    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.

    Der binäre Wert 0

    Im Gegensatz zu sprintf kann die printf-Funktion den binären Wert 0 (0x00) ausgeben.
    char c = 0x00;
    printf("%c", c);
    

    Beispiel

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

    sprintf()

    Funktion
    Schreibt eine formatierte Ausgabe in einen String.
    Syntax
    int sprintf(string result, string format[, argument, ...]);
    Rückgabewert
    Die sprintf-Funktion liefert die Zahl der Zeichen, die in den result-String geschrieben wurden.

    Im Falle eines Fehlers liefert sprintf den Wert -1.

    Siehe auch
    printf

    Format-String

    Siehe printf.

    Der binäre Wert 0

    Bitte beachten Sie, dass sprintf den binären Wert 0 (0x00) nicht verarbeiten kann. Wenn der Ergebnis-String 0x00 enthält, werden die folgenden Zeichen ignoriert. Verwenden Sie printf um binäre Daten auszugeben.

    Beispiel

    string result;
    int number = 42;
    sprintf(result, "The number is %d", number);
    

    String-Funktionen

    String-Funktionen werden dazu verwendet, Character-Strings zu manipulieren.

    Die folgenden String-Funktionen sind verfügbar:

    strchr()

    Funktion
    Durchsucht einen String nach dem ersten Vorkommen eines gegebenen Zeichens.
    Syntax
    int strchr(string s, char c[, int index]);
    Rückgabewert
    Die strchr-Funktion liefert den Integer-Offset des Zeichen im String oder -1, wenn das Zeichen nicht vorkommt.
    Siehe auch
    strrchr, strstr

    Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.

    Beispiel

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

    Funktion
    Erzeugt aus einem String-Array einen einzelnen String.
    Syntax
    string strjoin(string array[], char separator);
    Rückgabewert
    Die strjoin-Funktion liefert die kombinierten Einträge von array.
    Siehe auch
    strsplit, lookup, fileread

    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.

    Beispiel

    string a[] = { "Field 1", "Field 2", "Field 3" };
    string s = strjoin(a, ':');
    

    strlen()

    Funktion
    Berechnet die Länge eines Strings.
    Syntax
    int strlen(string s);
    Rückgabewert
    Die strlen-Funktion liefert die Zahl der Zeichen im String.

    Beispiel

    string s = "This is a string";
    int l = strlen(s);
    printf("The string is %d characters long\n", l);
    

    strlwr()

    Funktion
    Wandelt Großbuchstaben in einem String in Kleinbuchstaben um.
    Syntax
    string strlwr(string s);
    Rückgabewert
    Die strlwr-Funktion liefert den modifizierten String. Der Original-String (als Parameter übergeben) wird nicht geändert.
    Siehe auch
    strupr, tolower

    Beispiel

    string s = "This Is A String";
    string r = strlwr(s);
    printf("Prior to strlwr: %s - after strlwr: %s\n", s, r);
    

    strrchr()

    Funktion
    Durchsucht einen String nach dem letzten Vorkommen eines gegebenen Zeichens.
    Syntax
    int strrchr(string s, char c[, int index]);
    Rückgabewert
    Die strrchr-Funktion liefert den Integer-Offset des Zeichens im String oder -1, wenn das Zeichen nicht vorkommt.
    Siehe auch
    strchr, strrstr

    Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.

    Beispiel

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

    strrstr()

    Funktion
    Durchsucht einen String nach dem letzten Vorkommen eines gegebenen Substrings.
    Syntax
    int strrstr(string s1, string s2[, int index]);
    Rückgabewert
    Die strrstr-Funktion liefert den Integer-Offset des ersten Zeichens von s2 in s1, oder -1, wenn der Substring nicht vorkommt.
    Siehe auch
    strstr, strrchr

    Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.

    Beispiel

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

    Funktion
    Teilt einen String in einzelne Felder.
    Syntax
    int strsplit(string &array[], string s, char separator);
    Rückgabewert
    Die strsplit-Funktion liefert die Anzahl der Einträge die nach array kopiert wurden.
    Siehe auch
    strjoin, lookup, fileread

    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.

    Beispiel

    string a[];
    int n = strsplit(a, "Field 1:Field 2:Field 3", ':');
    

    strstr()

    Funktion
    Durchsucht einen String nach dem ersten Vorkommen eines gegebenen Substrings.
    Syntax
    int strstr(string s1, string s2[, int index]);
    Rückgabewert
    Die strstr-Funktion liefert den Integer-Offset des ersten Zeichens von s2 in s1, oder -1, wenn der Substring nicht vorkommt.
    Siehe auch
    strrstr, strchr, strxstr

    Falls index angegeben wird, beginnt die Suche an dieser Position. Negative Werte werden vom Ende des Strings her gezählt.

    Beispiel

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

    strsub()

    Funktion
    Extrahiert einen Substring aus einem String.
    Syntax
    string strsub(string s, int start[, int length]);
    Rückgabewert
    Die strsub-Funktion liefert den Substring, der durch start und length definiert ist.

    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.

    Beispiel

    string s = "This is a string";
    string t = strsub(s, 4, 7);
    printf("The extracted substring is: %s\n", t);
    

    strtod()

    Funktion
    Konvertiert einen String in einen Real-Wert.
    Syntax
    real strtod(string s);
    Rückgabewert
    Die strtod-Funktion liefert die numerische Repräsentation eines gegebenen Strings als real-Wert. Die Konvertierung wird beim ersten Zeichen beendet, das nicht dem Format einer Real-Konstanten entspricht. Wenn ein Fehler während er Konvertierung auftaucht, wir der Wert 0.0 zurückgegeben.
    Siehe auch strtol

    Beispiel

    string s = "3.1415";
    real r = strtod(s);
    printf("The value is %f\n", r);
    

    strtol()

    Funktion
    Konvertiert einen String in einen Integer-Wert.
    Syntax
    int strtol(string s);
    Rückgabewert
    Die strtol-Funktion liefert die numerische Representation eines gegebenen Strings als int-Wert. Die Konvertierung wird beim ersten Zeichen beendet, das nicht dem Format einer Integer-Konstanten entspricht. Wenn ein Fehler während der Konvertierung auftaucht, wir der Wert 0 zurückgegeben.
    Siehe auch strtod

    Beispiel

    string s = "1234";
    int i = strtol(s);
    printf("The value is %d\n", i);
    

    strupr()

    Funktion
    Konvertiert Kleinbuchstaben in einem String in Großbuchstaben.
    Syntax
    string strupr(string s);
    Rückgabewert
    Die strupr-Funktion liefert den modifizierten String. Der Original-String (als Parameter übergeben) wird nicht geändert.
    Siehe auch
    strlwr, toupper

    Beispiel

    string s = "This Is A String";
    string r = strupr(s);
    printf("Prior to strupr: %s - after strupr: %s\n", s, r);
    

    strxstr()

    Funktion
    Durchsucht einen String nach dem ersten Vorkommen eines regulären Ausdrucks.
    Syntax
    int strxstr(string s1, string s2[, int index[, int &length]]);
    Rückgabewert
    Die strxstr-Funktion liefert den Integer-Offset des Teilstrings in s1, auf den der reguläre Ausdruck in s2 passt, oder -1, wenn der reguläre Ausdruck nicht passt.
    Siehe auch
    strstr, strchr, strrstr

    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.

    Beispiel

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

    URN Funktionen

    URN Funktionen sind zur Bearbeitung von URNs.

    Folgende URN Funktionen gibt es:

    urnbase()

    Funktion
    Extrahiert die Basis-URN aus einem URN-String.
    Syntax
    string urnbase(string urn);
    Returns
    Die urnbase-Funktion liefert die Basis-URN der angegebenen URN, d.h.die URN ohne nachfolgende Versionsangabe oder / - z.B: die Basis-URN von "urn:adsk.eagle:footprint:123/4" ist "urn:adsk.eagle:footprint:123". Ist keine Versionsangabe vorhanden, wird der Input-String geliefert.

    Beispiel

    string urn = "urn:adsk.eagle:footprint:123/4";
    string base = urnbase(urn);
    printf("Die Basis-URN ist: %s\n", base);
    

    urnversion()

    Funktion
    Extrahiert die Versionsangabe aus einem URN-String.
    Syntax
    int urnversion(string urn);
    Returns
    Die urnversion-Funktion liefert die Version der angegebenen URN, d.h. die Nummer, die dem / folgt. Gibt es keine Versionsangabe, wird -1 zurückgegeben.

    Beispiel

    string urn = "urn:adsk.eagle:footprint:123/4";
    int version = urnversion(urn);
    printf("Die URN-Version ist: %d\n", version);
    

    Zeit-Funktionen

    Zeit-Funktionen werden dazu verwendet, die Zeit- und Datums- Informationen zu erhalten und weiterzuverarbeiten.

    Die folgenden Zeit-Funktionen sind verfügbar:

    time()

    Funktion
    Holt die gegenwärtige Systemzeit.
    Syntax
    int time(void);
    Rückgabewert
    Die time-Funktion liefert die gegenwärtige Systemzeit als Zahl von Sekunden, die seit einem systemabhängigen Referenzzeitpunkt vergangen sind.
    Siehe auch
    Zeit-Konvertierungen, filetime

    Beispiel

    int CurrentTime = time();
    

    timems()

    Funktion
    Liefert die Zeit in Millisekunden seit dem Start des ULPs.
    Syntax
    int timems(void);
    Rückgabewert
    Die timems-Funktion liefert die Zeit in Millisekunden seit dem Start des ULPs.

    Nach 86400000 Millisekunden (d.h. alle 24 Stunden) beginnt der Wert wieder bei 0.

    Siehe auch
    Zeit-Konvertierungen, filetime, timems()

    Beispiel

    int elapsed = timems();
    

    Zeit-Konvertierungen

    Funktion
    Zeit-Wert in Tag, Monat, Jahr etc. konvertieren.
    Syntax
    int t2day(int t);
    int t2dayofweek(int t);
    int t2hour(int t);
    int t2minute(int t);
    int t2month(int t);
    int t2second(int t);
    int t2year(int t);

    string t2string(int t[, string format]);
    Rückgabewert
    t2day liefert den Tag des Monats (1..31)
    t2dayofweek liefert den Tag der Woche (0=sunday..6)
    t2hour liefert die Stunde (0..23)
    t2minute liefert die Minute (0..59)
    t2month liefert den Monat (0..11)
    t2second liefert die Sekunde (0..59)
    t2year liefert das Jahr (einschließlich Jahrhundert!)
    t2string liefert einen formatierten String, der Datum und Zeit enthält
    Siehe auch
    time

    Die t2string-Funktion ohne den optionalen format-Parameter wandelt die gegebene Zeit t in einen landesspezifischen String in Ortszeit um.

    Wird t2string mit einem format-String aufgerufen, so bestimmt dieses Format die Darstellung des Ergebnisses.

    Folgende Ausdrücke können innerhalb des format-Strings benutzt werden:

    dder Tag als Zahl ohne führende Null (1 bis 31)
    ddder Tag als Zahl mit führender Null (01 bis 31)
    dddder abgekürzte, landesspezifische Name des Tages (z.B. "Mon" bis "Son")
    ddddder ausgeschriebene, landesspezifische Name des Tages (z.B. "Montag" bis "Sonntag")
    Mder Monat als Zahl ohne führende Null (1-12)
    MMder Monat als Zahl mit führender Null (01-12)
    MMMder abgekürzte, landesspezifische Name des Monats (z.B. "Jan" bis "Dez")
    MMMMder ausgeschriebene, landesspezifische Name des Monats (z.B. "Januar" bis "Dezember")
    yydas Jahr als zweistellige Zahl (00-99)
    yyyydas Jahr als vierstellige Zahl
    hdie Stunde ohne führende Null (0 bis 23 bzw. 1 bis 12 in AM/PM-Schreibweise)
    hhdie Stunde mit führender Null (00 bis 23 bzw. 01 bis 12 in AM/PM-Schreibweise)
    mdie Minute ohne führende Null (0 bis 59)
    mmdie Minute mit führender Null (00 bis 59)
    sdie Sekunde ohne führende Null (0 bis 59)
    ssdie Sekunde mit führender Null (00 bis 59)
    zdie Millisekunden ohne führende Nullen (immer 0, da die gegebene Zeit nur eine Auflösung von einer Sekunde hat)
    zzzdie Millisekunden mit führenden Nullen (immer 000, da die gegebene Zeit nur eine Auflösung von einer Sekunde hat)
    APAM/PM-Schreibweise benutzen (AP wird durch "AM" bzw. "PM" ersetzt)
    apam/pm-Schreibweise benutzen (ap wird durch "am" bzw. "pm" ersetzt)
    Udie gegebene Zeit in UTC anzeigen (muß das erste Zeichen sein; standardmäßig erfolgt die Anzeige in Ortszeit)

    Alle anderen Zeichen werden unverändert übernommen. In einfache Hochkommas eingeschlossene Zeichen werden als Text betrachtet und nicht als Ausdrücke. Zwei aufeinanderfolgende einfache Hochkommas ('') werden im Ergebnis durch ein einfaches Hochkomma ersetzt.

    Beispiel

    int t = time();
    printf("It is now %02d:%02d:%02d\n",
           t2hour(t), t2minute(t), t2second(t));
    printf("ISO time is %s\n", t2string(t, "Uyyyy-MM-dd hh:mm:ss"));
    

    Objekt-Funktionen

    Objekt-Funktionen werden dazu verwendet, allgemeine Informationen von Objekten zu erfragen.

    Die folgenden Objekt-Funktionen sind verfügbar:

    clrgroup()

    Funktion
    Löscht die Gruppen-Flags eines Objekts.
    Syntax
    void clrgroup(object);
    Siehe auch
    ingroup(), setgroup(), GROUP-Befehl

    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, wobei entsprechende Einschränkungen gelten wie bei setgroup().

    Beispiel

    board(B) {
      B.elements(E)
        clrgroup(E);
      }
    

    ingroup()

    Funktion
    Prüft ob ein Objekt in der Gruppe liegt.
    Syntax
    int ingroup(object);
    Rückgabewert
    Die ingroup-Funktion liefert einen Wert ungleich 0 wenn das gegebene Objekt in der Gruppe liegt.
    Siehe auch
    clrgroup(), setgroup(), GROUP-Befehl

    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.

    Übergeordnete Objekte, die ohne Aufhängepunkt sind (UL_NET, UL_SEGMENT, UL_SIGNAL, UL_POLYGON) oder als Zeichnungsobjekt eigentlich nicht vorhanden sind (UL_SHEET, UL_DEVICESET, UL_SYMBOL, UL_PACKAGE), liefern einen Wert ungleich 0 wenn eines oder mehrere der Objekte, die sie enthalten, in der Gruppe liegen. Details zu den Objekt-Hierarchien siehe Objekt-Typen.
    UL_CONTACTREF und UL_PINREF liefern einen Wert ungleich 0 wenn der referenzierte UL_CONTACT bzw. UL_PIN in der Gruppe liegt.
    Für andere nicht selektierbare Objekte wie UL_GRID, UL_VARIANT oder Wires eines UL_TEXT- oder UL_FRAME-Objektes ist das Verhalten von ingroup() undefiniert und sollte daher nicht verwendet werden.

    Ermitteln des Kontextmenü-Objekts

    Wenn das ULP von einem Kontextmenü aus gestartet wurde, wird aus dem Auswahlobjekt eine einelementige Gruppe gebildet, so dass es mit ingroup() identifiziert werden kann (siehe auch SET und RUN).

    Beispiel

    output("group.txt") {
      board(B) {
        B.elements(E) {
          if (ingroup(E))
             printf("Element %s is in the group\n", E.name);
          }
        }
      }
    

    setgroup()

    Funktion
    Setzt die Gruppen-Flags eines Objekts.
    Syntax
    void setgroup(object[, int flags]);
    Siehe auch
    clrgroup(), ingroup(), GROUP-Befehl

    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 mit folgenden Einschränkungen:
    Es gilt nicht für UL_LIBRARY und UL_SCHEMATIC. Untergeordnete Objekte, die nicht oder nicht einzeln selektierbar sind, werden nicht markiert (z.B. UL_GRID- oder UL_VARIANT-Objekte oder Wires von UL_TEXT- oder UL_FRAME-Objekten). Details zu den Objekt-Hierarchien siehe Objekt-Typen.

    Beispiel

    board(B) {
      B.elements(E)
        setgroup(E);
      }
    

    setvariant()

    Funktion
    Wählt die aktuelle Bestückungsvariante.
    Syntax
    int setvariant(string name);
    Siehe auch
    variant(), UL_VARIANTDEF, VARIANT-Befehl

    Die setvariant()-Funktion setzt die aktuelle Bestückungsvariante auf die mit name angegebene. Dies kann dazu benutzt werden durch alle Bauteile zu gehen und deren Daten genau so zu "sehen", wie sie in der gegebenen Variante definiert sind.

    name muss eine gültige Bestückungsvariante referenzieren, die in der geladenen Zeichnung enthalten ist.

    Diese Funktion liefert einen Wert ungleich 0 zurück, falls die angegebene Bestückungsvariante existiert, ansonsten 0.

    Die mittels eines Aufrufs von setvariant() eingestellte Bestückungsvariante ist nur so lange gültig, bis das User Language Programm endet. Danach ist die Variante in der Zeichnung wieder die selbe wie vor dem Start des ULPs.

    In einem Board kann das Setzen der Bestückungsvariante nur erfolgen, wenn auch ein konsistenter Schaltplan geladen ist.

    Beispiel

    if (setvariant("My variant")) {
       // do something ...
    else
       // error: unknown variant
    

    variant()

    Funktion
    Abfrage der aktuellen Bestückungsvariante.
    Syntax
    string variant(void);
    Siehe auch
    setvariant(), UL_VARIANTDEF, VARIANT-Befehl

    Die variant()-Funktion liefert den Namen der aktuellen Bestückungsvariante. Ist momentan keine Variante ausgewählt, wird ein leerer String ('') geliefert.

    Beispiel

    string CurrentVariant = variant();
    

    XML-Funktionen

    XML-Funktionen werden dazu verwendet, XML-Daten (Extensible Markup Language) zu verarbeiten.

    Die folgenden XML-Funktionen sind verfügbar:

    xmlattribute(), xmlattributes()

    Funktion
    Attribute eines XML-Tags extrahieren.
    Syntax
    string xmlattribute(string xml, string tag, string attribute);
    int xmlattributes(string &array[], string xml, string tag);
    Siehe auch
    xmlelement(), xmltags(), xmltext()

    Die xmlattribute-Funktion liefert den Wert des gegebenen Attributs attribute für das gegebene Tag tag innerhalb des gegebenen XML-Codes xml. Kommt ein Attribut mehrfach in einem Tag vor, so wird der Wert des letzten Vorkommens geliefert.

    Die xmlattributes-Funktion speichert die Namen aller Attribute des gegebenen Tags innerhalb des gegebenen XML-Codes in array und liefert die Anzahl der gefundenen Attribute zurück. Die Reihenfolge stimmt nicht notwendigerweise mit dem gegebenen XML-Code überein. Kommt ein Attribut mehrfach in einem Tag vor, so erscheint sein Name nur einmal im array.

    Das tag wird in Form eines Pfades angegeben.

    Falls der gegebene xml-Code einen Fehler enthält, so ist das Ergebnis jeglicher XML-Funktionen leer, und es wird dem Benutzer eine Warnung angezeigt, welche Informationen darüber enthält, an welcher Stelle im ULP bzw. im XML-Code der Fehler aufgetreten ist. Beachten Sie dabei, dass die Zeilen- und Spaltennummer im XML-Code sich auf den an diese Funktion als xml-Parameter übergebenen String bezieht.

    Beispiel

    // String XML contains the following data:
    //<root>
    //  <body abc="def" xyz="123">
    //    ...
    //  </body>
    //</root>
    string s[]; int n = xmlattributes(s, XML, "root/body");
    // Result: { "abc", "xyz" }
    string s = xmlattribute(XML, "root/body", "xyz");
    // Result: "123"

    xmlelement(), xmlelements()

    Funktion
    Element aus einem XML-Code extrahieren.
    Syntax
    string xmlelement(string xml, string tag);
    int xmlelements(string &array[], string xml, string tag);
    Siehe auch
    xmltags(), xmlattribute(), xmltext()

    Die xmlelement-Funktion liefert das komplette XML-Element des gegebenen Tags tag innerhalb des gegebenen XML-Codes xml. Das Ergebnis beinhaltet das äußere XML-Tag des Elements, und kann daher mit den anderen XML-Funktionen weiterverarbeitet werden. Leerzeichen, Tabulatoren und Zeilenumbrüche innerhalb des reinen Textes bleiben erhalten. Die generelle Formatierung der XML-Tags innerhalb des Elements sowie die Reihenfolge von Element-Attributen können sich jedoch von der im ursprünglichen xml -Code unterscheiden.
    Falls tag mehrfach in xml vorkommt, wird das erste davon geliefert. Benutzen Sie xmlelements um alle Instanzen zu bekommen.

    Die xmlelements-Funktion arbeitet genau wie xmlelement, liefert aber alle Instanzen von Elementen mit dem gegebenen tag. Der Rückgabewert ist die Anzahl der Element, die in array gespeichert wurden.

    Das tag wird in Form eines Pfades angegeben.

    Falls der gegebene xml-Code einen Fehler enthält, so ist das Ergebnis jeglicher XML-Funktionen leer, und es wird dem Benutzer eine Warnung angezeigt, welche Informationen darüber enthält, an welcher Stelle im ULP bzw. im XML-Code der Fehler aufgetreten ist. Beachten Sie dabei, dass die Zeilen- und Spaltennummer im XML-Code sich auf den an diese Funktion als xml-Parameter übergebenen String bezieht.

    Beispiel

    // String XML contains the following data:
    //<root>
    //  <body>
    //    <contents>
    //      <string>Some text 1</string>
    //      <any>anything 1</any>
    //    </contents>
    //    <contents>
    //      <string>Some text 2</string>
    //      <any>anything 2</any>
    //    </contents>
    //    <appendix>
    //      <string>Some text 3</string>
    //    </appendix>
    //  </body>
    //</root>
    //
    string s = xmlelement(XML, "root/body/appendix");
    // Result: " <appendix>\n <string>Some text 3</string>\n </appendix>\n"
    string s[]; int n = xmlelements(s, XML, "root/body/contents");
    // Result: { " <contents>\n <string>Some text 1</string>\n <any>anything 1</any>\n </contents>\n", // " <contents>\n <string>Some text 2</string>\n <any>anything 2</any>\n </contents>\n" // }

    xmltags()

    Funktion
    Liste der Tag-Namen aus einem XML-Code extrahieren.
    Syntax
    int xmltags(string &array[], string xml, string tag);
    Siehe auch
    xmlelement(), xmlattribute(), xmltext()

    Die xmltags-Funktion liefert die Namen aller Tags auf der obersten Ebene des gegebenen Tags tag innerhalb des gegebenen XML-Codes xml. Der Rückgabewert ist die Anzahl der in array gespeicherten Tag-Namen.

    Jeder Tag-Name wird nur einmal geliefert, auch wenn er mehrfach im XML-Code vorkommt.

    Das tag wird in Form eines Pfades angegeben.

    Falls der gegebene xml-Code einen Fehler enthält, so ist das Ergebnis jeglicher XML-Funktionen leer, und es wird dem Benutzer eine Warnung angezeigt, welche Informationen darüber enthält, an welcher Stelle im ULP bzw. im XML-Code der Fehler aufgetreten ist. Beachten Sie dabei, dass die Zeilen- und Spaltennummer im XML-Code sich auf den an diese Funktion als xml-Parameter übergebenen String bezieht.

    Beispiel

    //String XML contains the following data:
    //<root>
    //  <body>
    //    <contents>
    //      <string>Some text 1</string>
    //      <any>anything 1</any>
    //    </contents>
    //    <contents>
    //      <string>Some text 2</string>
    //      <any>anything 2</any>
    //    </contents>
    //    <appendix>
    //      <string>Some text 3</string>
    //    </appendix>
    //  </body>
    //</root>
    //
    string s[]; int n = xmltags(s, XML, "root/body");
    // Result: { "contents", "appendix" }
    int n = xmltags(s, XML, "");
    // Result: "root"

    xmltext()

    Funktion
    Text aus einem XML-Element extrahieren.
    Syntax
    string xmltext(string xml, string tag);
    Siehe auch
    xmlelement(), xmlattribute(), xmltags()

    Die xmltext-Funktion liefert den Text des gegebenen Tags tag innerhalb des XML-Codes xml.

    Alle Tags innerhalb des Textes werden entfernt, Leerzeichen, Tabulatoren und Zeilenumbrüche bleiben erhalten.

    Das tag wird in Form eines Pfades angegeben.

    Falls der gegebene xml-Code einen Fehler enthält, so ist das Ergebnis jeglicher XML-Funktionen leer, und es wird dem Benutzer eine Warnung angezeigt, welche Informationen darüber enthält, an welcher Stelle im ULP bzw. im XML-Code der Fehler aufgetreten ist. Beachten Sie dabei, dass die Zeilen- und Spaltennummer im XML-Code sich auf den an diese Funktion als xml-Parameter übergebenen String bezieht.

    Beispiel

    // String XML contains the following data:
    //<root>
    //  <body>
    //    Some <b>text</b>.
    //  </body>
    //</root>
    //
    string s = xmltext(XML, "root/body");
    // Result: "\n Some text.\n "

    Builtin-Statements

    Builtin-Statements werden im allgemeinen dazu verwendet, einen Kontext zu eröffnen, der den Zugriff auf Datenstrukturen und Dateien erlaubt.

    Die allgemeine Syntax von Builtin-Statements ist

    name(parameters) statement
    
    wobei 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:

    board()

    Funktion
    Öffnet einen Board-Kontext.
    Syntax
    board(identifier) statement
    Siehe auch
    schematic, library

    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.

    Prüfen, ob ein Board geladen ist

    Mit dem board-Statement ohne Angabe eines Arguments können Sie prüfen, ob das gegenwärtige Editor-Fenster ein Board enthält. In diesem Fall verhält sich board wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern ein Board geladen ist. Andernfalls wird der Wert 0 zurückgegeben.

    Zugriff auf ein Board von einem Schaltplan aus

    Wenn das gegenwärtige Editor-Fenster einen Schaltplan enthält, können Sie trotzdem auf das zugehörige Board zugreifen, indem Sie dem board-Statement den Präfix project voranstellen, wie in
    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!

    Beispiel

    if (board)
       board(B) {
         B.elements(E)
           printf("Element: %s\n", E.name);
         }
    

    deviceset()

    Funktion
    Öffnet einen Device-Set-Kontext.
    Syntax
    deviceset(identifier) statement
    Siehe auch
    package, symbol, library

    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.

    Prüfen, ob ein Device-Set geladen ist

    Mit dem deviceset-Statement ohne Angabe eines Arguments können Sie prüfen, ob das gegenwärtige Editor-Fenster ein Device-Set enthält. In diesem Fall verhält sich deviceset wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern ein Device-Set geladen ist. Andernfalls wird der Wert 0 zurückgegeben.

    Beispiel

    if (deviceset)
       deviceset(D) {
         D.gates(G)
           printf("Gate: %s\n", G.name);
         }
    

    library()

    Funktion
    Öffnet einen Library-Kontext.
    Syntax
    library(identifier) statement
    Siehe auch
    board, schematic, deviceset, package, symbol

    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.

    Prüfen, ob eine Bibliothek geladen ist

    Mit dem library-Statement ohne Angabe eines Arguments können Sie prüfen, ob das gegenwärtige Editor-Fenster eine Bibliothek enthält. In diesem Fall verhält sich library wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern eine Bibliothek geladen ist. Andernfalls wird der Wert 0 zurückgegeben.

    Beispiel

    if (library)
       library(L) {
         L.devices(D)
           printf("Device: %s\n", D.name);
         }
    

    module()

    Funktion
    Öffnet einen Modul-Kontext.
    Syntax
    module(identifier) statement
    Siehe auch
    board, library, schematic, sheet

    Das module-Statement öffnet einen Modul-Kontext, wenn im Editor-Fenster gerade ein Modul editiert wird. Eine Variable vom Typ UL_MODULE wird angelegt und erhält den Namen, den identifier angibt.

    Sobald der Modul-Kontext erfolgreich geöffnet wurde und eine UL_MODULE-Variable angelegt ist, wird statement ausgeführt. Innerhalb des Gültigkeitsbereichs von statement kann man auf die UL_MODULE-Variable zugreifen, um weitere Daten aus dem Modul zu erhalten.

    Wenn im Editor-Fenster gerade kein Modul editiert wird, wird eine Fehlermeldung ausgegeben, und das ULP wird beendet.

    Prüfen, ob gerade ein Modul editiert wird

    Mit dem module-Statement ohne Angabe eines Arguments können Sie prüfen, ob im Editor-Fenster gerade ein Modul editiert wird. In diesem Fall verhält sich module wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern ein Modul editiert wird. Andernfalls wird der Wert 0 zurückgegeben.

    Beispiel

    if (module)
       module(M) {
         printf("Module: %s\n", M.name);
         }
    

    output()

    Funktion
    Öffnet eine Ausgabe-Datei für nachfolgende printf()-Aufrufe.
    Syntax
    output(string filename[, string mode]) statement
    Siehe auch
    printf, fileerror

    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.

    Datei-Modi

    Der mode-Parameter definiert, wie die Datei geöffnet werden soll. Wenn kein mode-Parameter angegeben ist, gilt der Standardwert "wt".

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

    Verschachtelte Output-Statements

    output-Statements können verschachtelt werden, solange genügend Datei-Handles verfügbar sind - vorausgesetzt, es greifen nicht mehrere aktive output-Statements auf dieselbe Datei zu.

    Beispiel

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

    package()

    Funktion
    Öffnet einen Package-Kontext.
    Syntax
    package(identifier) statement
    Siehe auch
    library, deviceset, symbol

    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.

    Prüfen, ob ein Package geladen ist

    Mit dem package-Statement ohne Angabe eines Arguments können Sie prüfen, ob das gegenwärtige Editor-Fenster ein Package enthält. In diesem Fall verhält sich package wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern ein Package geladen ist. Andernfalls wird der Wert 0 zurückgegeben.

    Beispiel

    if (package)
       package(P) {
         P.contacts(C)
           printf("Contact: %s\n", C.name);
         }
    

    schematic()

    Funktion
    Öffnet einen Schaltplan-Kontext.
    Syntax
    schematic(identifier) statement
    Siehe auch
    board, library, module, sheet

    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.

    Prüfen, ob ein Schaltplan geladen ist

    Mit dem schematic-Statement ohne Angabe eines Arguments können Sie prüfen, ob das gegenwärtige Editor-Fenster einen Schaltplan enthält. In diesem Fall verhält sich schematic wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern ein Schaltplan geladen ist. Andernfalls wird der Wert 0 zurückgegeben.

    Zugriff auf einen Schaltplan vom Board aus

    Wenn das gegenwärtige Editor-Fenster ein Board enthält, können Sie trotzdem auf den zugehörigen Schaltplan zugreifen, indem Sie dem schematic-Statement den Präfix project voranstellen, wie in
    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!

    Zugriff auf die gegenwärtige Seite eines Schaltplans

    Verwenden Sie das sheet-Statement, um direkt auf die gegenwärtig geladene Schaltplanseite zuzugreifen.

    Zugriff auf das gerade editierte Modul

    Verwenden Sie das module-Statement, um direkt auf das gerade editierte Modul zuzugreifen.

    Beispiel

    if (schematic)
       schematic(S) {
         S.parts(P)
           printf("Part: %s\n", P.name);
         }
    

    sheet()

    Funktion
    Öffnet einen UL_SHEET-Kontext.
    Syntax
    sheet(identifier) statement
    Siehe auch
    schematic

    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.

    Prüfen, ob eine Schaltplanseite geladen ist

    Mit dem sheet-Statement ohne Angabe eines Arguments können Sie prüfen, ob das gegenwärtige Editor-Fenster eine Schaltplanseite enthält. In diesem Fall verhält sich sheet wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern eine Schaltplanseite geladen ist. Andernfalls wird der Wert 0 zurückgegeben.

    Beispiel

    if (sheet)
       sheet(S) {
         S.instances(I)
           printf("Instance: %s\n", I.name);
         }
    

    symbol()

    Funktion
    Öffnet einen Symbol-Kontext.
    Syntax
    symbol(identifier) statement
    Siehe auch
    library, deviceset, package

    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.

    Prüfen, ob ein Symbol geladen ist

    Mit dem symbol-Statement ohne Angabe eines Arguments können Sie prüfen, ob das gegenwärtige Editor-Fenster ein Symbol enthält. In diesem Fall verhält sich symbol wie eine Integer-Konstante, die den Wert 1 zurückgibt, sofern ein Symbol geladen ist. Andernfalls wird der Wert 0 zurückgegeben.

    Beispiel

    if (symbol)
       symbol(S) {
         S.pins(P)
           printf("Pin: %s\n", P.name);
         }
    

    Dialoge

    User-Language-Dialoge ermöglichen es, ein eigenes Frontend für ein User-Language-Progamm zu definieren.

    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

    Vordefinierte Dialoge

    Vordefinierte Dialoge sind die typischen Dialoge, die häufig zur Dateiauswahl oder bei Fehlermeldungen verwendet werden.

    Es gibt folgende vordefinierte Dialoge:

    Siehe Dialog-Objekte für Informationen über das Definieren eigener, komplexer Benutzer-Dialoge.

    dlgDirectory()

    Funktion
    Zeigt den Verzeichnis-Dialog.
    Syntax
    string dlgDirectory(string Title[, string Start])
    Rückgabewert
    Die dlgDirectory-Funktion liefert den vollen Pfadnamen des gewählten Verzeichnisses.
    Hat der Benutzer den Dialog abgebrochen, ist das Resultat ein leerer String.
    Siehe auch
    dlgFileOpen

    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.

    Beispiel

    string dirName;
    dirName = dlgDirectory("Select a directory", "");
    

    dlgFileOpen(), dlgFileSave()

    Funktion
    Zeigt einen Datei-Dialog.
    Syntax
    string dlgFileOpen(string Title[, string Start[, string Filter]])
    string dlgFileSave(string Title[, string Start[, string Filter]])
    Rückgabewert
    Die Funktionen dlgFileOpen und dlgFileSave liefern die volle Pfadangabe der gewählten Datei.
    Bricht der Benutzer den Dialog ab, ist das Ergebnis ein leerer String.
    Siehe auch
    dlgDirectory

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

    Beispiel

    string fileName;
    fileName = dlgFileOpen("Select a file", "", "*.brd");
    

    dlgMessageBox()

    Funktion
    Zeigt eine Message-Box.
    Syntax
    int dlgMessageBox(string Message[, button_list])
    Rückgabewert
    Die dlgMessageBox-Funktion liefert den Index der Schaltfläche, die der Benutzer selektiert hat.
    Die erste Schaltfläche in button_list hat den Index 0.
    Siehe auch
    status()

    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 "&lt;", "&gt;" bzw. "&amp;" 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.

    Beispiel

    if (dlgMessageBox("Are you sure?", "&Yes", "&No") == 0) {
       // let's do it!
       }
    

    Dialog-Objekte

    Ein User-Language-Dialog kann aus folgenden Dialog-Objekten bestehen (die einzelnen Begriffe wurden in diesem Fall nicht ins Deutsche übersetzt, da sonst der Zusammenhang zu den ULP-Objekten verloren ginge):

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

    Funktion
    Definiert die Position einer Cell (Zelle) in einem Grid-Layout-Kontext.
    Syntax
    dlgCell(int row, int column[, int row2, int column2]) statement
    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.

    Beispiel

    string Text;
    dlgGridLayout {
      dlgCell(0, 0) dlgLabel("Cell 0,0");
      dlgCell(1, 2, 4, 7) dlgTextEdit(Text);
      }
    

    dlgCheckBox

    Funktion
    Definiert eine Checkbox.
    Syntax
    dlgCheckBox(string Text, int &Checked) [ statement ]
    Siehe auch
    dlgRadioButton, dlgGroup, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    int mirror = 0;
    int rotate = 1;
    int flip   = 0;
    dlgGroup("Orientation") {
      dlgCheckBox("&Mirror", mirror);
      dlgCheckBox("&Rotate", rotate);
      dlgCheckBox("&Flip", flip);
      }
    

    dlgComboBox

    Funktion
    Definiert ein Combo-Box-Auswahl-Feld.
    Syntax
    dlgComboBox(string array[], int &Selected) [ statement ]
    Siehe auch
    dlgListBox, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    string Colors[] = { "red", "green", "blue", "yellow" };
    int Selected = 2; // initially selects "blue"
    dlgComboBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
    

    dlgDialog

    Funktion
    Führt einen User-Language-Dialog aus.
    Syntax
    int dlgDialog(string Title) block ;
    Rückgabewert
    Die dlgDialog-Funktion liefert einen Integer-Wert, dem durch den Aufruf der dlgAccept()-Funktion eine benutzerspezifische Bedeutung zugeordnet werden kann.
    Wird der Dialog einfach geschlossen, ist der Rückgabewert -1.
    Siehe auch dlgGridLayout, dlgHBoxLayout, dlgVBoxLayout, dlgAccept, dlgReset, dlgReject, Ein vollständiges Beispiel

    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.

    Beispiele

    int Result = dlgDialog("Hello") {
      dlgLabel("Hello world");
      dlgPushButton("+OK") dlgAccept();
      };
    int haveButton = 1;
    dlgDialog("Test") {
      dlgLabel("Start");
      if (haveButton)
         dlgPushButton("Here") dlgAccept();
      };
    

    dlgGridLayout

    Funktion
    Öffnet einen Grid-Layout-Kontext.
    Syntax
    dlgGridLayout statement
    Siehe auch
    dlgCell, dlgHBoxLayout, dlgVBoxLayout, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

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

    dlgGroup

    Funktion
    Definiert ein Group-Feld.
    Syntax
    dlgGroup(string Title) statement
    Siehe auch
    dlgCheckBox, dlgRadioButton, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    int align = 1;
    dlgGroup("Alignment") {
      dlgRadioButton("&Top", align);
      dlgRadioButton("&Center", align);
      dlgRadioButton("&Bottom", align);
      }
    

    dlgHBoxLayout

    Funktion
    Öffnet einen Horizontal-Box-Layout-Kontext.
    Syntax
    dlgHBoxLayout statement
    Siehe auch
    dlgGridLayout, dlgVBoxLayout, Layout-Information, Ein vollständige Beispiel

    Das dlgHBoxLayout-Statement öffnet einen Horizontal-Box-Layout-Kontext für das angegebene statement.

    Beispiel

    dlgHBoxLayout {
      dlgLabel("Box 1");
      dlgLabel("Box 2");
      dlgLabel("Box 3");
      }
    

    dlgIntEdit

    Funktion
    Definiert ein Integer-Eingabe-Feld.
    Syntax
    dlgIntEdit(int &Value, int Min, int Max)
    Siehe auch
    dlgRealEdit, dlgStringEdit, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    int Value = 42;
    dlgHBoxLayout {
      dlgLabel("Enter a &Number between 0 and 99");
      dlgIntEdit(Value, 0, 99);
      }
    

    dlgLabel

    Funktion
    Definiert ein Text-Label.
    Syntax
    dlgLabel(string Text [, int Update])
    Siehe auch
    Layout-Information, Ein vollständiges Beispiel, dlgRedisplay()

    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 "&lt;", "&gt;" bzw. "&amp;" angegeben werden.

    Externe Hyperlinks im Text werden mit dem entsprechenden Anwendungsprogramm geöffnet.

    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.

    Beispiel

    string OS = "Windows";
    dlgHBoxLayout {
      dlgLabel(OS, 1);
      dlgPushButton("&Change OS") { OS = "Linux"; }
      }
    

    dlgListBox

    Funktion
    Definiert ein List-Box-Auswahl-Feld.
    Syntax
    dlgListBox(string array[], int &Selected) [ statement ]
    Siehe auch
    dlgComboBox, dlgListView, dlgSelectionChanged, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    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 (siehe dlgSelectionChanged für Hinweise wie das statement auch bei einer bloßen Änderung der Auswahl in der Liste aufgerufen werden kann.
    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.

    Beispiel

    string Colors[] = { "red", "green", "blue", "yellow" };
    int Selected = 2; // initially selects "blue"
    dlgListBox(Colors, Selected) dlgMessageBox("You have selected " + Colors[Selected]);
    

    dlgListView

    Funktion
    Definiert ein mehrspaltiges List-View-Auswahl-Feld.
    Syntax
    dlgListView(string Headers, string array[], int &Selected[, int &Sort]) [ statement ]
    Siehe auch
    dlgListBox, dlgSelectionChanged, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    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. Wird der Wert auf -2 gesetzt, so wird der erste Eintrag gemäß der aktuellen Sortierspalte selektiert. Wurde kein List-View-Eintrag selektiert, wird -1 zurückgegeben.

    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 (siehe dlgSelectionChanged für Hinweise wie das statement auch bei einer bloßen Änderung der Auswahl in der Liste aufgerufen werden kann.
    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.

    Beispiel

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

    dlgPushButton

    Funktion
    Definiert einen Push-Button.
    Syntax
    dlgPushButton(string Text) statement
    Siehe auch
    Layout-Information, Dialog-Funktionen, Ein vollständige Beispiel

    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.

    Beispiel

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

    dlgRadioButton

    Funktion
    Definiert einen Radio-Button.
    Syntax
    dlgRadioButton(string Text, int &Selected) [ statement ]
    Siehe auch
    dlgCheckBox, dlgGroup, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    int align = 1;
    dlgGroup("Alignment") {
      dlgRadioButton("&Top", align);
      dlgRadioButton("&Center", align);
      dlgRadioButton("&Bottom", align);
      }
    

    dlgRealEdit

    Funktion
    Definiert ein Real-Eingabe-Feld.
    Syntax
    dlgRealEdit(real &Value, real Min, real Max)
    Siehe auch
    dlgIntEdit, dlgStringEdit, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    real Value = 1.4142;
    dlgHBoxLayout {
      dlgLabel("Enter a &Number between 0 and 99");
      dlgRealEdit(Value, 0.0, 99.0);
      }
    

    dlgSpacing

    Funktion
    Definiert zusätzlichen Abstand in einem Box-Layout-Kontext.
    Syntax
    dlgSpacing(int Size)
    Siehe auch
    dlgHBoxLayout, dlgVBoxLayout, dlgStretch, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    dlgVBoxLayout {
      dlgLabel("Label 1");
      dlgSpacing(40);
      dlgLabel("Label 2");
      }
    

    dlgSpinBox

    Funktion
    Definiert ein Spin-Box-Auswahl-Feld.
    Syntax
    dlgSpinBox(int &Value, int Min, int Max)
    Siehe auch
    dlgIntEdit, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    int Value = 42;
    dlgHBoxLayout {
      dlgLabel("&Select value");
      dlgSpinBox(Value, 0, 99);
      }
    

    dlgStretch

    Funktion
    Definiert einen leeren, dehnbaren Abstand in einem Box-Layout-Kontext.
    Syntax
    dlgStretch(int Factor)
    Siehe auch
    dlgHBoxLayout, dlgVBoxLayout, dlgSpacing, Layout-Information, Ein vollständiges Beispiel

    Das dlgStretch-Statement definiert einen leeren dehnbaren Abstand in einem Vertical- oder einem Horizontal-Box-Layout-Kontext.

    Factor definiert den Dehnungsfaktor des Abstands.

    Beispiel

    dlgHBoxLayout {
      dlgStretch(1);
      dlgPushButton("+OK")    { dlgAccept(); };
      dlgPushButton("Cancel") { dlgReject(); };
      }
    

    dlgStringEdit

    Funktion
    Definiert ein String-Eingabe-Feld.
    Syntax
    dlgStringEdit(string &Text[, string &History[][, int Size]])
    Siehe auch
    dlgRealEdit, dlgIntEdit, dlgTextEdit, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    Das dlgStringEdit-Statement definiert ein einzeiliges Text-Eingabe-Feld mit dem angegebenen Text.

    Wird History angegeben, so werden die Strings, die der Benutzer der Reihe nach eingibt, in diesem Array gespeichert. Das Eingabe-Feld enthält dann einen Button, über den der Benutzer aus bereits eingegeben Strings auswählen kann. Wird eine Size größer als Null angegeben, so werden maximal so viele Strings im Array gespeichert. Enthält History beim Öffnen des Dialogs bereits Daten, so werden diese zur Initialisierung der History verwendet. Die zuletzt erfolgte Benutzereingabe wird bei Index 0 gespeichert.
    Keiner der Strings in History darf leer sein (sollte ein leerer String vorhanden sein, werden alle nachfolgenden, inklusive dem Leerstring ignoriert).

    Beispiel

    string Name = "Linus";
    dlgHBoxLayout {
      dlgLabel("Enter &Name");
      dlgStringEdit(Name);
      }
    

    dlgTabPage

    Funktion
    Definiert eine Tab-Page.
    Syntax
    dlgTabPage(string Title) statement
    Siehe auch
    dlgTabWidget, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    dlgTabWidget {
      dlgTabPage("Tab &1") {
        dlgLabel("This is page 1");
        }
      dlgTabPage("Tab &2") {
        dlgLabel("This is page 2");
        }
      }
    

    dlgTabWidget

    Funktion
    Definiert einen Container für Tab-Pages.
    Syntax
    dlgTabWidget { tabpages }
    dlgTabWidget(int &Index) { tabpages }
    Siehe auch
    dlgTabPage, Layout-Information, Ein vollständiges Beispiel

    dlgTabWidget definiert einen Platzhalter für einen Satz von Tab-Pages.

    tabpages ist eine Liste eines oder mehrerer dlgTabPage-Objekte. Es dürfen keine anderen Dialog-Objekte in dieser Liste enthalten sein.

    Index gibt an, welche Seite von Beginn an im Vordergrund sein soll. Wenn eine andere Seite angewählt wird, ändert sich die Variable Index dementsprechend. Die erste Seite hat (unabhängig vom Titel) als Index den Wert 0.

    Beispiele

    dlgTabWidget {
      dlgTabPage("Tab &1") {
        dlgLabel("This is page 1");
        }
      dlgTabPage("Tab &2") {
        dlgLabel("This is page 2");
        }
      }
    
    dlgDialog("test")
    {
      int TabNr = 0;
      int CheckBoxValue[];
      dlgTabWidget(TabNr) {
         for (int i = 0; i <= 9; i++) {
             string s;
             sprintf(s, "%d", i);
             dlgTabPage("Tab " + s) {
                dlgLabel("This is page " + s);
                dlgCheckBox(s, CheckBoxValue[i]) {
                   string Msg;
                   sprintf(Msg, "Value #%d: %d\n", TabNr, CheckBoxValue[TabNr]);
                   dlgMessageBox(Msg);
                   }
                }
             }
         }
    };
    

    dlgTextEdit

    Funktion
    Definiert ein mehrzeiliges Text-Eingabe-Feld.
    Syntax
    dlgTextEdit(string &Text)
    Siehe auch
    dlgStringEdit, dlgTextView, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    string Text = "This is some text.\nLine 2\nLine 3";
    dlgVBoxLayout {
      dlgLabel("&Edit the text");
      dlgTextEdit(Text);
      }
    

    dlgTextView

    Funktion
    Definiert ein mehrzeiliges Text-Viewer-Feld.
    Syntax
    dlgTextView(string Text)
    dlgTextView(string Text, string &Link) statement
    Siehe auch
    dlgTextEdit, dlgLabel, Layout-Information, Ein vollständiges Beispiel

    Das dlgTextView-Statement definiert ein mehrzeiliges Text-Viewer-Feld mit dem angegebenen Text.

    Der Text darf HTML-Tags enthalten.

    Externe Hyperlinks im Text werden mit dem entsprechenden Anwendungsprogramm geöffnet.

    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. Ist ein Link angegeben, so werden externe Hyperlinks nicht geöffnet.

    Beispiel

    string Text = "This is some text.\nLine 2\nLine 3";
    dlgVBoxLayout {
      dlgLabel("&View the text");
      dlgTextView(Text);
      }
    

    dlgVBoxLayout

    Funktion
    Öffnet einen Vertical-Box-Layout-Kontext.
    Syntax
    dlgVBoxLayout statement
    Siehe auch
    dlgGridLayout, dlgHBoxLayout, Layout-Information, Ein vollständiges Beispiel

    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.

    Beispiel

    dlgVBoxLayout {
      dlgLabel("Box 1");
      dlgLabel("Box 2");
      dlgLabel("Box 3");
      }
    

    Layout-Information

    Alle Objekte eines User-Language-Dialogs werden in einem Layout-Kontext verwendet.

    Es gibt verschiedene Layout-Kontexte, wie grid, horizontal oder vertical.

    Grid-Layout-Kontext

    Objekte in einem Grid-Layout-Kontext müssen die Raster-Koordinaten der Zelle (Cell) oder der Zellen angeben, in der/denen sie plaziert werden sollen. Um einen Text in Reihe (row) 5, Spalte (column) 2 zu plazieren, schreiben Sie
    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") {
        //...
        }
      }
    

    Horizontal-Layout-Kontext

    Objekte in einem Horizontal-Layout-Kontext werden von links nach rechts plaziert.

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

    Vertical-Layout-Kontext

    Objekte in einem Vertical-Layout-Kontext folgen denselben Vorschriften wie die in einem Horizontal-Layout-Kontext mit dem Unterschied, dass sie von oben nach unten angeordnet werden.

    Gemischter Layout-Kontext

    Vertical-, Horizontal- und Grid-Layout-Kontexte können gemischt werden, um die gewünschte Dialog-Struktur zu ezeugen. Siehe Ein vollständiges Beispiel.

    Dialog-Funktionen

    Folgende Funktionen können mit User-Language-Dialogen verwendet werden:

    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
    dlgSelectionChanged() gibt an ob sich die aktuelle Auswahl in einer dlgListView oder dlgListBox geändert hat

    dlgAccept()

    Funktion
    Schließt den Dialog und akzeptiert dessen Inhalt.
    Syntax
    void dlgAccept([ int Result ]);
    Siehe auch
    dlgReject, dlgDialog, Ein vollständiges Beispiel

    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!

    Beispiel

    int Result = dlgDialog("Test") {
                   dlgPushButton("+OK")    dlgAccept(42);
                   dlgPushButton("Cancel") dlgReject();
                   };
    

    dlgRedisplay()

    Funktion
    Aktualisiert den Dialog-Inhalt nachdem Werte verändert wurden.
    Syntax
    void dlgRedisplay(void);
    Siehe auch
    dlgReset, dlgDialog, Ein vollständiges Beispiel

    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.

    Beispiel

    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.";
                     }
                   };
    

    dlgReset()

    Funktion
    Setzt alle Dialog-Objekte auf ihren ursprünglichen Wert.
    Syntax
    void dlgReset(void);
    Siehe auch
    dlgReject, dlgDialog, Ein vollständiges Beispiel

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

    Beispiel

    int Number = 1;
    int Result = dlgDialog("Test") {
                   dlgIntEdit(Number);
                   dlgPushButton("+OK")    dlgAccept(42);
                   dlgPushButton("Cancel") dlgReject();
                   dlgPushButton("Reset")  dlgReset();
                   };
    

    dlgReject()

    Funktion
    Schließt den Dialog und verwirft seinen Inhalt.
    Syntax
    void dlgReject([ int Result ]);
    Siehe auch
    dlgAccept, dlgReset, dlgDialog, Ein vollständiges Beispiel

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

    Beispiel

    int Result = dlgDialog("Test") {
                   dlgPushButton("+OK")    dlgAccept(42);
                   dlgPushButton("Cancel") dlgReject();
                   };
    

    dlgSelectionChanged()

    Funktion
    Gibt an ob sich die aktuelle Auswahl in einer dlgListView oder dlgListBox geändert hat.
    Syntax
    int dlgSelectionChanged(void);
    Rückgabewert
    Die dlgSelectionChanged-Funktion liefert einen Wert ungleich 0, falls sich lediglich die Auswahl in der Liste geändert hat.
    Siehe auch
    dlgListView, dlgListBox

    Die dlgSelectionChanged-Funktion kann innerhalb eines Listen-Kontextes verwendet werden um festzustellen, ob das "statement" einer dlgListView oder dlgListBox aufgerufen wurde weil der Benutzer einen Doppelklick auf ein Listenelement gemacht hat, oder weil sich lediglich die Auswahl in der Liste geändert hat.

    Falls das "statement" einer dlgListView oder dlgListBox keinen Aufruf von dlgSelectionChanged enthält, so wird das "statement" nur dann ausgeführt, wenn der Benutzer einen Doppelklick auf ein Listenelement macht. Soll ein ULP auf bloße Änderungen der Auswahl in der Liste reagieren, so kann es dlgSelectionChanged im "statement" der Liste aufrufen. Hierdurch wird erreicht, dass das "statement" auch bei einer Änderungen der Auswahl in der Liste ausgeführt wird.

    Ist beim Öffnen des Dialogs bereits ein Listenelement ausgewählt, und das "statement" der Liste enthält einen Aufruf von dlgSelectionChanged, so wird das "statement" ausgeführt und dlgSelectionChanged liefert einen Wert ungleich 0, um den anfänglichen Wechsel von "keine Auswahl" zu einer konkreten Auswahl anzuzeigen. Etwaige spätere programmtechnische Veränderungen der Strings oder der Auswahl der Liste führen nicht zu einer automatischen Ausführung des "statements" der Liste. Dies ist wichtig zu bedenken, falls das ausgewählte Listenelement ein anderes Dialogobjekt steuert, beispielsweise ein dlgTextView, welches eine ausführlichere Darstellung des ausgewählten Listenelements anzeigt.

    Beispiel

    string Colors[] = { "red\tThe color RED", "green\tThe color GREEN", "blue\tThe color BLUE" };
    int Selected = 0; // initially selects "red"
    string MyColor;
    dlgLabel(MyColor, 1);
    dlgListView("Name\tDescription", Colors, Selected) {
      if (dlgSelectionChanged())
         MyColor = Colors[Selected];
      else
         dlgMessageBox("You have chosen " + Colors[Selected]);
      }
    

    Escape-Zeichen

    Einige Zeichen haben in Schaltflächen- oder Label-Texten eine besondere Bedeutung, so dass sie mit Escape-Zeichen markiert werden müssen, wenn sie tatsächlich im Text erscheinen sollen.

    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:

    TagBeschreibung
    <html>...</html>Ein HTML-Dokument.
    <body>...</body>Der Inhalt eines HTML-Dokuments. Es versteht folgendes Attribut
    • bgcolor - Die Hintergrundfarbe, z. B. bgcolor="yellow" oder bgcolor="#0000FF". Dieses Attribut wirkt nur innerhalb einer dlgTextView.
    <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
    • href - Das Referenz-Ziel wie in <a href="target.html">...</a>. Sie dürfen auch einen zusätzlichen Anker innerhalb des angegebenen Ziel-Dokuments angeben, z. B. <a href="target.html#123">...</a>. Falls Sie auf eine lokale Datei verlinken wollen, deren Name ein Leerzeichen enthält, müssen Sie dem Dateinamen ein file: voranstellen, wie in <a href="file:/path with blanks/target.html">...</a>.
    • name - Der Anker-Name, wie in <a name="123">...</a>.
    <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:
    • color - Die Textfarbe, z. B. color="red" oder color="#FF0000".
    • size - Die logische Größe der Schrift. Logische Größen von 1 bis 7 werden unterstützt. Der Wert darf entweder absolut, z. B. size=3, oder relativ, wie size=-2 sein. Im letzten Fall werden die Größen einfach addiert.
    • face - Die Schriftart-Familie, z. B. face=times.
    <img...>Ein Bild. Dieses Tag versteht die folgenden Attribute:
    • src - Der Name des Bildes, z. B. <img src="image.png">.
      Der URL des Bildes kann auch extern sein, wie in <img src="http://web.cadsoft.de/cslogo.gif">.
    • width - Die Breite des Bildes. Passt das Bild nicht in die angegebene Größe, wird es automatisch skaliert.
    • height - Die Höhe des Bildes.
    • align - Bestimmt wo das Bild plaziert wird. Defaultmäßig wird ein Bild "inline" plaziert, genauso wie ein Buchstabe. Legen Sie left oder right fest, um das Bild an der entsprechenden Stelle zu plazieren.
    <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 boolesche Attribut border an um einen Rahmen zu erhalten. Andere Attribute sind:
    • bgcolor - Die Hintergrundfarbe.
    • width - Die Tabellenbreite. Wird entweder in Pixel oder in Prozent der Spaltenbreite angegeben, z. B. width=80%.
    • border - Die Breite des Tabellenrandes. Default ist 0 (= kein Rand).
    • cellspacing - Zusätzlicher Leerraum um die Tabellenzelle. Default ist 2.
    • cellpadding - Zusätzlicher Leerraum um den Inhalt einer Tabellenzelle. Default ist 1.
    <tr>...</tr>Eine Tabellen-Reihe. Kann nur mit table verwendet werden. Versteht die Attribute:
    • bgcolor - Die Hintergrundfarbe.
    <td>...</td>Eine Zelle in einer Tabelle. Kann nur innerhalb tr verwendet werden.Versteht die Attribute:
    • bgcolor - Die Hintergrundfarbe.
    • width - Die Zellenbreite. Wird entweder in Pixel oder in Prozent der gesamten Tabellenbreite angegeben, z. B. width=50%.
    • colspan - Legt fest wieviele Spalten diese Zelle belegt. Default ist 1.
    • rowspan - Legt fest wieviele Reihen diese Zelle belegt. Default ist 1.
    • align - Positionierung, mögliche Angaben sind left, right und center. Default ist links-bündig.
    <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.

    TagBedeutung
    &lt;<
    &gt;>
    &amp;&
    &nbsp;Leerzeichen ohne Umbruch
    &auml;ä
    &ouml;ö
    &uuml;ü
    &Auml;Ä
    &Ouml;Ö
    &Uuml;Ü
    &szlig;ß
    &copy;©
    &deg;°
    &micro;µ
    &plusmn;±
    &quot;"

    Automatischer Backup

    Maximum backup level

    Der Write-Befehl erzeugt Backup-Kopien der gesicherten Dateien. Sie haben denselben Namen wie die Originaldateien mit einer modifizierten Extension, nach dem Muster
    .x#n
    
    Dabei steht für 'x' der Buchstabe

    b in Board-Dateien
    s in Schaltplan-Dateien
    l in Bibliotheks-Dateien
    d in Designblock-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.

    Auto-Backup-Interval

    Wurde eine Zeichnung modifiziert, wird automatisch nach der unter Auto backup interval eingestellten Zeit eine Sicherungskopie erstellt.

    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
    d in Designblock-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.

    Datei-Locking

    EAGLE unterstützt eine einfache Form des Sperrens von Dateien. Dateien, die in einem EAGLE-Zeichnungs- oder Texteditor geladen sind, werden standardmäßig zum Schreiben gesperrt. Sobald der Editor geschlossen oder eine andere Datei geladen wird, wird der Lock freigegeben.

    Der Lock-Mechanismus benutzt eine Lock-Datei namens .file.lck, wobei file der Name der zu sperrenden Datei ist.

    Wenn eine bereits gesperrte Datei geladen werden soll, bietet EAGLE in einem Dialog verschiedene Möglichkeiten, wie Speichern der Datei unter einem anderen Namen, Wiederholen, Löschen oder Ignorieren des Locks an.

    Wiederholen kann gewählt werden, sobald der Lock-Inhaber die Datei geschlossen hat.

    Das Löschen des Locks kann fehlschlagen, wenn Sie nicht die entsprechende Dateirechte für die Lock-Datei haben. Es ist ratsam den Lock-Inhaber zu informieren, wenn Sie seine Lock-Datei gelöscht haben. Die Option Löschen ist auch nützlich, falls die Lock-Datei, zum Beispiel nach einem unbeabsichtigen Stromausfall übrig geblieben ist.

    Wenn Sie den Lock ignorieren, können Sie die Datei editieren, aber nur unter einen anderen Namen speichern. Diese Option ist bequem, wenn Sie die Datei nicht verändern, sondern nur zur Überprüfung oder für Testzwecke öffnen wollen.

    Im CAM-Prozessor und bei Dateien mit nur Leserechten wird keine Lock-Datei erzeugt.

    Das File-Locking kann im Options-Menü des Control-Panels unter Datensicherung / Sperrschutz oder mit dem SET-Befehl aus- und eingeschaltet werden. Wenn das File-Locking ausgeschaltet ist, beachtet EAGLE die Locks von anderen Anwendern mit eingeschaltetem Locking (und berichtet dies wenn nötig). Lediglich eigene Locks werden nicht erzeugt. Die Lock-Einstellung wird in der Eaglerc-Datei gespeichert.

    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.

    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.

    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.

    Hinweis Attribute:

    Namen und Werte von Attributen können mit ATTRIBUTE zur Konsistenzherstellung angepaßt werden. Handelt es sich um Bibliotheks-Attribute, kann ein Austausch der Devices für die betroffenen Bauteile mit REPLACE im Schaltplan erforderlich sein.

    Hinweis Packagevarianten:

    Hier gibt es mehrere Ansätze: