我对 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)是以下值:
我实际上看到的只是插槽数组中的值:
有人可以告诉我如何通过循环迭代来累积 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)