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)
中看到的值是:
- 5 (0 + 5)
- 12 (5 + 7)
- 23 (12 + 11)
- 30 (23 + 17)
我实际看到的只是插槽数组中的值:
- 5
- 7
- 12
- 23
谁能告诉我如何通过循环的迭代来积累 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]);
我是 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)
中看到的值是:
- 5 (0 + 5)
- 12 (5 + 7)
- 23 (12 + 11)
- 30 (23 + 17)
我实际看到的只是插槽数组中的值:
- 5
- 7
- 12
- 23
谁能告诉我如何通过循环的迭代来积累 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]);