OpenSCAD 变量不累积

OpenSCAD Variable not accumulating

我是 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]);
}

我希望从 echo (ofs) 中看到的值是:

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

谁能告诉我如何通过循环的迭代来积累 ofs 的值?任何帮助将不胜感激。

非常片面的回答:如documentation

中所述

variables are bound to expressions and keep a single value during their entire lifetime

它们就像常量。所以你不能按照你的想法使用 for 循环。

我没有答案。您可能必须找到一种基于向量的智能方法来准备 [5,7,12,13] 向量。也许如果你描述你如何构建你的初始向量,我可以提供想法。或者您可以等待更有经验的用户的回答:)

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

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]);