2017-02-22 108 views
0

我有這個VEX腳本的問題。 的@是創建attributs而不是變量在列表中添加一個新值

f[]@myList; // create list attribut 
float pavW = 0.0; 
for(int i = 1 ; i < 11 ; i++){ 
    string path = "../widthPav" + itoa(i); 
    pavW = ch(path); // take the value in the specific channel 
    if (i == 1){ 
     push(@myList,pavW); //add new component of value to myList 
    } 
    if (pavW > 0){ 
     foreach (int j ; float value ; @myList){ 
      if (pavW == value){ 
       break; 
      }else{ 
       push(@myList,pavW); //add new component... 
       break; 
      } 
     } 
    } 

}

我想「pavW」價值增加「myList中」如果「pavW」是「myList中」的元素型動物。 結果不如例外。

+0

這是一個煩惱腳本,三維軟件的專有langage。它看起來像C. @允許你創建屬性,它就像變量,但你可以在3d上下文中使用它們 –

+1

僅僅因爲它看起來像C並不意味着它應該被標記C.無論如何,現在一個新的標籤是如果您可以鏈接到參考手冊,以便標籤描述可以填充,那就太棒了。 – StoryTeller

回答

0

foreach您只是比較array的第一個元素。而對於其他元素,您的if條件將失敗並繼續添加到myList。你應該pusharrayforeach塊以外。

臨時變量名爲unique可用於觸發push

f[]@myList; // create list attribut 
float pavW = 0.0; 
for (int i = 1; i < 11; i++) 
{ 
    string path = "widthPav" + itoa(i); 
    pavW = ch(path); // take the value in the specific channel 
    if (i == 1) 
    { 
     push(@myList, pavW); //add new component of value to myList 
    } 
    if (pavW > 0) 
    { 
     int unique = 0; 
     foreach (float value; @myList) 
     { 
      unique = 1; 
      if (pavW == value) 
      { 
       unique = 0; 
       break; 
      } 
     } 
     if (unique) 
      push(@myList, pavW); //add new component... 
    } 
} 

建議

  • 你不需要指數foreach
  • 對於這類任務,只需創建一個備用parm並添加Python 表達式即可獲取獨特的widthPav parm列表。

簡單Python片段:

node = hou.pwd() 
parmsUniqueValue = [] 

[parmsUniqueValue.append(parm.eval()) for parm in node.parms() if parm.name().startswith('widthPav') if parm.eval() not in parmsUniqueValue] 
相關問題