Objekttypen

Die EAGLE-Datenstrukturen werden in XML-Dateien gespeichert:

Diese Datendateien enthalten eine Hierarchie von Objekten. In einem User-Language-Programm können Sie über die entsprechenden Builtin-Zugriffsanweisungen auf diese Hierarchien zugreifen:

library(L) { ... }
schematic(S) { ... }
board(B) { ... }

Diese Zugriffsanweisungen konfigurieren einen Kontext, in dem Sie auf alle Objekte in der Bibliothek, im Stromlaufplan oder auf der Leiterplatte zugreifen können.

Auf die Eigenschaften dieser Objekte kann über die entsprechenden Elemente zugegriffen werden. Es gibt zwei Arten von Elementen:

Die Datenelemente geben die angeforderten Daten von einem Objekt sofort zurück. Beispiel: Bei

board(B) {
  printf("%s\n", B.name);
  }

gibt der Datenelementname des Leiterplattenobjekts B den Namen der Leiterplatte zurück. Datenelemente können auch andere Objekte zurückgeben. Beispiel:

board(B) {
  printf("%f\n", B.grid.size);
  }

Hier gibt das Rasterdatenelement der Leiterplatte ein Rasterobjekt zurück, dessen Größendatenelement dann die Rastergröße zurückgibt.

Loop-Members werden verwendet, um auf mehrere Objekte desselben Typs zuzugreifen, die in einem Objekt einer höheren Ebene enthalten sind:

board(B) {
  B.elements(E) {
    printf("%-8s %-8s\n", E.name, E.value);
    }
  }

In diesem Beispiel wird die Loop-Member-Funktion elements() der Leiterplatte verwendet, um eine Schleife durch alle Elemente der Leiterplatte einzurichten. Der Block, der der B.elements(E)-Anweisung folgt, wird wiederum für jedes Element ausgeführt, und das aktuelle Element kann innerhalb des Blocks durch den Namen E referenziert werden.

Loop-Members verarbeiten Objekte in alphanumerischer Reihenfolge, sofern sie einen Namen haben.

Eine Loop-Member-Funktion erstellt eine Variable des Typs, der für die angeforderten Objekte erforderlich ist. Sie können für eine solche Variable einen beliebigen gültigen Namen verwenden, daher kann das obige Beispiel auch wie folgt geschrieben werden:

board(MyBoard) {
  MyBoard.elements(TheCurrentElement) {
    printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
    }
  }

Der Effekt wäre derselbe. Der Umfang der Variablen, die durch eine Loop-Member-Funktion erstellt wird, ist auf die Anweisung (oder den Block) beschränkt, die (der) unmittelbar nach dem Aufruf der Schleifenfunktion ausgeführt wird.

Objekthierarchie einer Bibliothek

LIBRARY
  GRID
  LAYER
  DEVICESET
    DEVICE
    GATE
  FOOTPRINT
    CONTACT
      PAD
      SMD
    CIRCLE
    HOLE
    RECTANGLE
    FRAME
    DIMENSION
    TEXT
    WIRE
    POLYSHAPE
      WIRE
    POLYCUTOUT
      WIRE
  PACKAGE3D
  SYMBOL
    PIN
    CIRCLE
    RECTANGLE
    FRAME
    DIMENSION
    TEXT
    WIRE
    POLYSHAPE
      WIRE

Objekthierarchie eines Schaltplans

SCHEMATIC
  GRID
  LAYER
  LIBRARY
  ATTRIBUTE
  VARIANTDEF
  COMPONENT
    ATTRIBUTE
    VARIANT
  SHEET
    CIRCLE
    RECTANGLE
    FRAME
    DIMENSION
    TEXT
    WIRE
    POLYSHAPE
      WIRE
    INSTANCE
      ATTRIBUTE
    MODULEINST
    BUS
      SEGMENT
        LABEL
          TEXT
          WIRE
        WIRE
    NET
      SEGMENT
        JUNCTION
        PINREF
        PORTREF
        TEXT
        WIRE
  MODULE
    PORT
    COMPONENT
    SHEET
      (same as above)

Objekthierarchie einer Leiterplatte

BOARD
  GRID
  LAYER
  LIBRARY
  ATTRIBUTE
  VARIANTDEF
  CIRCLE
  HOLE
  RECTANGLE
  FRAME
  DIMENSION
  TEXT
  WIRE
  POLYSHAPE
    WIRE
  POLYCUTOUT
    WIRE
  ELEMENT
    ATTRIBUTE
    VARIANT
  SIGNAL
    CONTACTREF
    POLYPOUR
      WIRE
    VIA
    WIRE