attribute[] | string(주 참고) |
device | UL_DEVICE |
deviceset | UL_DEVICESET |
module | 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(주 참고) |
PART_NAME_LENGTH | 부품 이름의 최대 권장 길이(형식이 지정된 출력에서만 사용) |
PART_VALUE_LENGTH | 부품 값의 최대 권장 길이(형식이 지정된 출력에서만 사용) |
attribute[] 멤버는 UL_PART에서 지정된 속성 값을 조회하는 데 사용할 수 있습니다(아래 두 번째 예 참고). 지정된 이름의 속성이 없거나 이 속성이 명시적으로 비어 있는 경우 반환된 문자열은 비어 있습니다.
UL_PART의 attributes()를 반복할 때 결과 UL_ATTRIBUTE 객체의 name, value, defaultvalue 및 constant 멤버만 유효합니다.
UL_PART의 조립품 *variant()*를 반복하는 경우 실제 변형만 사용할 수 있습니다. 여기서는 기본 조립품 변형을 사용할 수 없습니다. 따라서 조립품 변형이 없는 부품에서는 이 루프가 활성화되지 않습니다.
부품이 시트 컨텍스트에 있는 경우 instances() 루프 멤버는 해당 시트에서 실제로 사용되는 해당 복제만 반복합니다. 부품이 구조도 또는 모듈 컨텍스트에 있는 경우 모든 복제가 반복됩니다.
부품이 가상 부품인 경우(가상 부품은 UL_SCHEMATIC.allparts()를 사용하여 검색할 수 있음, UL_SCHEMATIC 참고) instances() 루프는 비어 있습니다.
부품이 모듈에서 제공된 부품이거나 가상 부품인 경우 모듈에서 이를 참조합니다. 그렇지 않은 경우(주 구조도의 부품) 모듈이 null입니다.
부품이 가상인 경우 modulepart는 원본 모듈의 (실제) 부품입니다. 주 구조도의 부품이거나 모듈 부품 자체인 경우 modulepart가 null입니다.
부품이 가상인 경우 modulepath는 사용 중인 부품이 포함된 모듈을 가리키는 모듈 복제의 이름 시퀀스가 포함된 문자열입니다. 이러한 이름은 ':'으로 구분됩니다. 다른 경우에는 이 문자열이 비어 있습니다.
예를 들어 이름이 'MI1:R1'인 가상 부품에는 modulepart 'MI1'이 있습니다. 오프셋 표기법이 있는 모듈 복제 'MX'에서 나오는 'R101'은 modulepart 'MX'를 제공합니다. 'MAIN:SUB1:SUBSUB1:C5'에는 modulepart 'MAIN:SUB1:SUBSUB1'이 있습니다.
일부 UL_PART에는 3D 패키지가 없습니다. package3d 멤버는 3D 패키지가 있는지 여부를 테스트하는 부울로 사용될 수 있습니다(예: 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]);
}
}
}
}