Types d’objets

Les structures de données EAGLE sont stockées dans des fichiers XML :

Ces fichiers de données contiennent une hiérarchie d’objets. Dans un programme de langage utilisateur, vous pouvez accéder à ces hiérarchies via leurs instructions d’accès intégrées respectives :

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

Ces instructions d’accès définissent un contexte qui vous permet d’accéder à tous les objets contenus dans la bibliothèque, le schéma ou le circuit imprimé.

Les propriétés de ces objets sont accessibles via les membres. Il existe deux types de membres :

Les membres de données renvoient immédiatement les données demandées à partir d’un objet. Par exemple, dans :

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

le nom du membre de données de l’objet de circuit imprimé B renvoie le nom du circuit imprimé. Les membres de données peuvent également renvoyer d’autres objets, comme dans l’exemple suivant :

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

où le membre de données de grille du circuit imprimé renvoie un objet de grille dont le membre de données de taille renvoie ensuite la taille de la grille.

Les membres de boucle sont utilisés pour accéder à plusieurs objets du même type, qui sont contenus dans un objet de niveau supérieur :

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

Dans cet exemple, la fonction de membre de boucle elements() du circuit imprimé est utilisée pour définir une boucle qui parcourt tous les éléments du circuit imprimé. Le bloc qui suit l’instruction B.elements(E) est exécuté successivement pour chaque élément. À l’intérieur du bloc, l’élément actif est référencé sous le nom E.

Les membres de boucle traitent les objets dans l’ordre alphanumérique, dans la mesure où ils ont un nom.

Une fonction de membre de boucle crée une variable du type nécessaire pour contenir les objets requis. Vous pouvez utiliser tout nom valide pour cette variable. L’exemple ci-dessus peut donc aussi s’écrire comme suit :

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

Le résultat est exactement le même. La portée de la variable créée par une fonction de membre de boucle est limitée à l’instruction (ou au bloc) qui se trouve immédiatement après l’appel de fonction de boucle.

Hiérarchie d’objets d’une bibliothèque

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

Hiérarchie d’objets d’un schéma

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)

Hiérarchie d’objets d’un circuit imprimé

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