首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenSCAD变量不累积

OpenSCAD变量不累积
EN

Stack Overflow用户
提问于 2021-08-27 23:50:45
回答 2查看 113关注 0票数 2

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

代码语言:javascript
复制
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的值吗?任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-28 16:56:58

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

代码语言:javascript
复制
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]);
票数 3
EN

Stack Overflow用户

发布于 2021-08-28 07:22:51

一个非常片面的答案是:正如文档中提到的,

变量绑定到表达式,并在其整个生命周期中保持单个值。

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

我没有答案。你可能需要找到一种聪明的、基于矢量的方法来准备你的5,7,12,13矢量。也许如果你知道如何构造你的初始向量,我可以帮助你的想法。或者,您可以等待一个更有经验的用户的回答:)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68960320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档