OpenSCAD 变量未累积

Hoo*_*oga 4 openscad

我对 OpenSCAD 相当陌生,并且遇到了一个我不明白的问题。在下面的代码片段中,变量“ofs”不是从“for”迭代的先前值中累积的。

slots = [5, 7, 11, 17];

ofs = 0;
for (i = slots) {
    ofs = ofs + i;
    echo (ofs);
    translate([ofs,0,0])
    cube([1, 50, 30]);
}
Run Code Online (Sandbox Code Playgroud)

我期望看到的echo (ofs)是以下值:

  • 5 (0 + 5)
  • 12(5 + 7)
  • 23 (12 + 11)
  • 30 (23 + 17)

我实际上看到的只是插槽数组中的值:

  • 5
  • 7
  • 12
  • 23

有人可以告诉我如何通过循环迭代来累积 ofs 的值吗?任何帮助,将不胜感激。

小智 5

通常的策略是在进入几何生成之前首先计算值,例如:

slots = [5, 7, 11, 17];
ofs = [ for (o = 0, i = 0;i < len(slots);o = o + slots[i],i = i + 1) o + slots[i]];
echo(slots = slots, ofs = ofs);
for (o = ofs) translate([o,0,0]) cube([1, 50, 30]);
Run Code Online (Sandbox Code Playgroud)