【问题标题】:OpenSCAD Variable not accumulatingOpenSCAD 变量未累积
【发布时间】:2021-08-29 00:56:58
【问题描述】:

我是 OpenSCAD 的新手,遇到了一个我不明白的问题。在下面的 sn-p 中,变量“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 的值吗?任何帮助将不胜感激。

【问题讨论】:

    标签: openscad


    【解决方案1】:

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

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

    【讨论】:

    • StackOverflow 上的人们让世界变得更美好。非常感谢您花时间帮助新手!
    • 这对我有用,但我不确定我是否理解这里的for 声明。您能否详细说明这是如何生成ofs 的列表的?
    【解决方案2】:

    一个非常部分的答案:正如documentation中提到的,

    变量绑定到表达式并在期间保持单个值 他们的一生

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

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

    【讨论】:

    • 感谢您的意见。我想阅读文档有它的好处!这对我来说是一个奇怪的概念。上面的答案提供了我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多