EAGLE データ構造は XML ファイルに保存されます。
これらのデータ ファイルには、オブジェクトの階層が含まれています。ユーザ言語プログラムでは、それぞれの組み込みアクセス文を使用してこれらの階層にアクセスできます。
library(L) { ... }
schematic(S) { ... }
board(B) { ... }これらのアクセス文は、ライブラリ、回路図、または基板に含まれるすべてのオブジェクトにアクセスできるコンテキストを設定します。
これらのオブジェクトのプロパティには、メンバを使用してアクセスできます。メンバには次の 2 種類があります。
データ メンバは、オブジェクトから要求されたデータを即座に返します。例:
board(B) {
printf("%s\n", B.name);
}board オブジェクト B のメンバ name は、基板の名前を返します。データ メンバは、次のように、他のオブジェクトを返すこともできます。
board(B) {
printf("%f\n", B.grid.size);
}ここで、board の grid データ メンバーは grid オブジェクトを返し、grid オブジェクトの size データ メンバーはグリッドのサイズを返します。
ループ メンバーは、上位オブジェクトに含まれている同じ種類の複数のオブジェクトにアクセスするために使用されます。
board(B) {
B.elements(E) {
printf("%-8s %-8s\n", E.name, E.value);
}
}この例では、board の elements() ループ メンバー関数を使用して、board のすべての要素のループを設定します。B.elements(E) 文に続くブロックは要素ごとに順番に実行され、現在の要素はブロック内で名前 E を使用して参照できます。
ループ メンバは、英数字順にオブジェクトを処理します(名前を持っている場合)。
ループ メンバ関数は、要求されたオブジェクトを保持するために必要なタイプの変数を作成します。このような変数には任意の有効な名前を使用できます。したがって、上記の例は次のようにも記述できます。
board(MyBoard) {
MyBoard.elements(TheCurrentElement) {
printf("%-8s %-8s\n", TheCurrentElement.name, TheCurrentElement.value);
}
}これは、正確に同じことを実行します。ループ メンバ関数によって作成される変数のスコープは、ループ関数呼び出しの直後の文(またはブロック)に制限されます。
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
WIRESCHEMATIC
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)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