polyExtrudeFace не является атрибутом выбранного объекта. Это будет узел, который подключен к объекту.
Вам придется обращаться с ним как с узлом и устанавливать его атрибут с помощью setAttr. Допустим, имя узла было polyExtrudeFace1. Вы бы сделали:
string $extrudeNode = "polyExtrudeFace1";
setAttr ($extrudeNode + ".subCurveExtrMax") $ran;
Если вы хотите найти узел выдавливания динамически, вы можете использовать listConnections для выбранного объекта с типом «polyExtrudeFace», чтобы получить список подключенных узлов выдавливания.
Также обратите внимание, что узлы вытягивания связаны с узлами формы, а не с узлами преобразования. Поэтому мы должны убедиться, что мы делаем listConnections на узлах формы.
В вашем случае может работать что-то вроде этого (изменение кода):
string $selObj[] = `ls -sl`;
for ($obj in $selObj) {
string $selShape[] = `listRelatives -shapes -path`;
string $conn[] = `listConnections -type "polyExtrudeFace" -source 0 -destination 1 $selShape[0]`;
for ($extrudeNode in $conn) {
setAttr ($extrudeNode + ".subCurveExtrMax") $ran;
}
}
Тем не менее, это применит rand ко всем узлам extrudeNodes объекта. Если это не то, что вы хотите, вы можете применить свою логику, чтобы выбрать только узел выдавливания, к которому вы хотите применить ранд, внутри самого внутреннего цикла for.
Надеюсь, это помогло.
person
kartikg3
schedule
03.11.2014