UL_PART
Члени даних
атрибут [] | рядок (див. примітку) |
пристрій | UL_DEVICE |
набір пристроїв | UL_DEVICESET |
модуль | UL_MODULE (див. примітку) |
modulepart | UL_PART (див. примітку) |
модульний шлях | рядок (див. примітку) |
назва | рядок (PART_NAME_LENGTH) |
package3d | UL_PACKAGE3D |
заселяти | int (0=не заповнювати, 1=заповнювати) |
значення | рядок (PART_VALUE_LENGTH) |
Члени циклу
атрибути() | UL_ATTRIBUTE (див. примітку) |
екземпляри() | UL_INSTANCE (див. примітку) |
варіанти() | UL_VARIANT (див. примітку) |
Дивіться також UL_SCHEMATIC, UL_SHEET
Константи
PART_NAME_LENGTH | макс. рекомендована довжина назви частини (використовується лише у форматованому виведенні) |
PART_VALUE_LENGTH | макс. рекомендована довжина частини значення (використовується лише у форматованому виведенні) |
Примітка
Член attribute[] може бути використаний для запиту UL_PART на значення заданого атрибута (див. другий приклад нижче). Повернений рядок є порожнім, якщо немає атрибута з заданим іменем або якщо цей атрибут явно порожній.
Під час циклічного перегляду атрибутів() UL_PART дійсними є лише ім’я, значення, значення за замовчуванням і постійні члени отриманих об’єктів UL_ATTRIBUTE.
Під час циклічного перегляду збірки variants() UL_PART доступні лише фактичні варіанти. Варіант збірки за замовчуванням тут недоступний. Тому цей цикл не активний на деталях без варіантів складання.
Якщо частина знаходиться в контексті аркуша, учасник циклу instances() перебирає лише ті екземпляри, які фактично використовуються на цьому аркуші. Якщо частина знаходиться в контексті схеми або модуля, усі екземпляри проходять циклічно.
Якщо частина є віртуальною (віртуальні частини можна отримати за допомогою UL_SCHEMATIC.allparts(), див. UL_SCHEMATIC), цикл instances() порожній.
Якщо частина походить від модуля або є віртуальною частиною, модуль посилається на це. Якщо ні (частина в основній схемі), модуль є нульовим.
Якщо частина є віртуальною, modulepart є (справжньою) частиною модуля вихідного модуля. Якщо це частина в основній схемі або якщо це сама частина модуля, modulepart дорівнює нулю.
Якщо частина віртуальна, modulepath — це рядок із послідовністю імен екземплярів модуля, які вказують на модуль, що містить використовувану частину. Ці назви розділені знаком «:». В інших випадках цей рядок порожній.
Наприклад, віртуальна частина з назвою «MI1:R1» має шлях до модуля «MI1». «R101», що надходить із екземпляра модуля «MX» із нотацією зміщення, забезпечує шлях до модуля «MX». «MAIN:SUB1:SUBSUB1:C5» має шлях до модуля «MAIN:SUB1:SUBSUB1».
Не всі UL_PART мають пакети 3D. Член package3d можна використовувати як логічне значення для перевірки наявності 3D-пакета, наприклад if (P.package3d).
Приклади
schematic ( S ) { S . parts ( P ) printf ( "Part: %s
" , P . name );
} schematic ( S ) { S . allparts ( P ) {
if ( P . attribute [ "REMARK" ]) printf ( "%s: %s
" , 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
" , 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
" , 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.
" , P . name , miNames [ 0 ]);
else { printf ( "%s is a virtual part in a multiple hierarchy created by this path of module instances:
" , P . name );
for ( int i = 0 ; i < nr ; ++ i ) printf ( "%s
" , miNames [ i ]);
}
}
}
}
Орігінал сторінки: UL_PART