修复 MEL FOR 循环

问题描述

最近几天我一直在为 if 循环执行此操作。

基本上,这是一个从 6 的高度开始并在 FOR 循环内减小的循环,当高度 (y) 达到 1 时,我希望它开始增加 1。

在循环到达 1 的那一刻,高度增加了 1,但随后因为它在它周围循环,所以下一个形状不会再增加 1。

我知道这有点令人困惑,但我希望我能得到一些帮助!

谢谢!

int $f = 6; 
for ($e = 24 ; $e <= 31; $e++) 
{
if ($f <= 1) {
string $currentObject = $objects[$e];
select -r $currentObject ;
setAttr ($currentObject+".sy") ($f++); 

}

else {
string $currentObject = $objects[$e];
select -r $currentObject ;
setAttr ($currentObject+".sy") ($f--); 

}
}

解决方法

如果我正确理解您的问题,您只想在极端情况下切换递增或递减的方向,而不是在 i. e.您需要另一个对方向进行编码的变量(递增或递减)。我在这段代码中调用了 $diff

int $f = 6; 
int $diff = -1;
for ($e = 24 ; $e <= 31; $e++) 
{
  if ($f <= 1) {
    $diff = 1;
  } else if ($f >= 6) {
    $diff = -1;
  }
  string $currentObject = $objects[$e];
  select -r $currentObject ;
  setAttr ($currentObject+".sy") ($f);
  $f = $f + $diff; 
}