因此,我尝试使用递归函数构建一个简单的缩放多维数据集堆栈:
function stack(levels) = (
levels <= 0
? cube([1,1,1], center=true)
: union() {
cube([1,1,1], center=true);
translate([0, 0, 0.9]) scale([1, 1, 0.9]) stack(levels - 1);
}
);
stack(5);
现在由于某些原因,我现在不明白openscad告诉我在第4行出现语法错误,将编辑器标记为:
不幸的是,控制台只产生以下输出:
错误:第4行中的分析器错误:语法错误
错误:编译失败!
所以我很难弄清楚我到底做错了什么。
我想有一种方法可以用
for
,但我认为递归方法更具可读性。
我试着用模块来做,如果不行,我可以使用
对于
结合模块我想-我更希望这个工作,并发现它非常可读。
更新:所以从
OpenSCAD User Manual
我得到这个片段:
我倾向于对此进行解释,这样就不可能像我想象的那样创建递归结构。
相反,我可以:
*使用helper函数生成多维数据集参数,然后计算它们的并集。
*根据
对于
循环。
我不确定我的信念是否正确,但理由是:
-
我不能在函数中创建对象,因为那样会产生效果。
-
我不能递归地使用模块,因为它不返回结果,而且变量在openscad中的工作方式可能会干扰这个想法。