我的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;
}
}
}
}
我想添加&#39; pavW&#39;价值到&#39; myList&#39;如果&#39; pavW&#39;是'myList&#39;元素的不同之处。 结果不是例外。
答案 0 :(得分:0)
在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]