1

如何在 OpenSCAD 中索引矩阵或循环遍历它?我正在尝试访问并将通过forloop分配给坐标的值分配给它们的单个变量,如下所示,或者至少能够在矩阵中单独访问这些值。

for ( coordinates = [ [  15,  15,  2],
                      [  15, -15,  2],
                      [ -15, -15,  2],
                      [ -15,  15,  2] ]) 
{
    x = coordinates[0];
    y = coordinates[1];
    z = coordinates[2];
    translate([x+4, y, z]){ 
        cube([x,y,z]);
    }
}
4

1 回答 1

1

首先,标准变量是在 OpenSCAD 的编译时设置的,而不是在运行时设置的(官方文档说明了这一点),因此您不能在循环中为它们赋值。您必须内联引用才能coordinates使用其中的值。

第二个问题是你不能制作一个负尺寸的立方体,或者我猜测我从提供的循环的第二次到第四次迭代中没有得到任何输出。您可以将传递到多维数据集的值包装在abs()调用中以获取绝对值以确保其为正。

这是内联coordinates变量并abs()用于将正值传递给的工作示例cube()

for ( coordinates = [ [  15,  15,  2],
                      [  15, -15,  2],
                      [ -15, -15,  2],
                      [ -15,  15,  2] ])
{
    translate([coordinates[0] + 4, coordinates[1], coordinates[2]]) { 
        cube([abs(coordinates[0]), abs(coordinates[1]), abs(coordinates[2])]);
    }
}
于 2015-05-16T05:36:34.947 回答