| attribute[] | string (注を参照) |
| デバイス | UL_DEVICE |
| deviceset | UL_DEVICESET |
| モジュール | UL_MODULE (注を参照) |
| modulepart | UL_PART (注を参照) |
| modulepath | string (注を参照) |
| name | string (PART_NAME_LENGTH) |
| package3d | UL_PACKAGE3D |
| populate | int (0 = 入力しない、1 = 入力する) |
| value | string (PART_VALUE_LENGTH) |
| attributes() | UL_ATTRIBUTE (注を参照) |
| instances() | UL_INSTANCE (注を参照) |
| variants() | UL_VARIANT (注を参照) |
UL_SCHEMATIC、UL_SHEET も参照してください
| PART_NAME_LENGTH | パーツ名の推奨最大長さ(形式設定された出力でのみ使用) |
| PART_VALUE_LENGTH | パーツの値の推奨最大長さ(形式設定された出力でのみ使用) |
attribute[] メンバーを使用すると、指定した属性の値で UL_PART を照会できます(次の 2 番目の例を参照)。指定した名前の属性が存在しない場合、またはこの属性が明示的に空である場合、返される文字列は空になります。
UL_PART の attributes() をループする場合、結果の UL_ATTRIBUTE オブジェクトのメンバー name、value、defaultvalue、および constant のみが有効です。
UL_PART のアセンブリ variants() をループする場合、実際のバリアントのみを使用できます。ここでは、既定のアセンブリ バリアントは使用できません。したがって、このループは、アセンブリ バリアントがないパーツではアクティブになりません。
パーツがシート コンテキスト内にある場合、instances() ループ メンバーはそのシートで実際に使用されるインスタンスのみをループします。パーツが回路図またはモジュールのコンテキスト内にある場合、すべてのインスタンスがループされます。
パーツが仮想パーツである場合(仮想パーツは UL_SCHEMATIC.allparts() で取得できます。UL_SCHEMATIC を参照)、instances() ループは空です。
パーツがモジュールからのものであるか、仮想パーツである場合、module はこれを参照します。それ以外(メイン回路図内のパーツ)の場合、module は null です。
パーツが仮想である場合、modulepart はソース モジュール module からの(実際の)パーツです。メイン回路図内のパーツの場合、またはモジュール パーツ自体である場合、modulepart は null です。
パーツが仮想である場合、modulepath は、使用されているパーツが含まれているモジュールを指す一連のモジュール インスタンスの名前が含まれている文字列です。これらの名前は「:」で区切られます。それ以外の場合、この文字列は空です。
たとえば、「MI1:R1」という名前の仮想パーツの modulepath は「MI1」です。オフセット表記付きのモジュール インスタンス「MX」から取得した「R101」の modulepath は「MX」です。「MAIN:SUB1:SUBSUB1:C5」の modulepath は「MAIN:SUB1:SUBSUB1」です。
すべての UL_PART に 3D パッケージがあるわけではありません。package3d メンバーは、3D パッケージが存在するかどうかをテストするブール値として使用できます(例: if (P.package3d))。
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]);
}
}
}
}