2014-11-03 20 views

回答

0

polyExtrudeFace不是所選對象的屬性。它將是一個連接到該對象的節點。

您必須將其視爲節點並使用setAttr設置其屬性。假設節點的名稱是polyExtrudeFace1。你會做:

string $extrudeNode = "polyExtrudeFace1"; 
setAttr ($extrudeNode + ".subCurveExtrMax") $ran; 

如果要動態地找到擠壓節點,你可以使用類型爲「polyExtrudeFace」您選擇的對象listConnections可以連接擠出節點列表。

此外,請注意拉伸節點連接到形狀節點而不是變換節點。所以我們必須確保我們在形狀節點上執行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; 
    } 
} 

這將適用蘭特對對象的所有extrudeNodes雖然。如果這不是你想要的,那麼你可以應用你的邏輯來挑選你想要應用rand的拉伸節點,在最內部的for循環內。

希望這有助於。

1

當你調用擠壓在第一時間你也可以提供一個隨機的擠壓深度:

polyExtrudeFacet -lt $ranx $rany $ranz; // to specify all 3 offsets 
polyExtrudeFacet -ltz $ranz; // to specify just the extrusion depth