Добавить новое значение в список

У меня проблема с этим скриптом VEX. @ - создавать атрибуты вместо переменных

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". результат не так исключен.

1 ответ

В foreach вы сравниваете с первым элементом array только. И для других элементов вашего if условия не выполняется и продолжает добавлять к myList, Вам следует push к array вне foreach блок.

Временный вар по имени 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,
  • Для такого рода задач просто создайте запасной парм и добавьте 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]  
Другие вопросы по тегам