首页 > 解决方案 > openscad 钻入由 for 创建的组

问题描述

我知道当我使用它时,它会创建一组生成的孩子。我创建了一个名为 grid 的模块,如下所示:

module grid(x0,y0,dx,dy,nx,ny) {
    for (x=[0:1:nx-1]) {
        for(y=[0:1:ny-1]) {
            i=x*nx+y;
            echo(i);
            translate([x0+x*dx,y0+y*dy,0]) children(i);
        }
    }
}

当这样使用时:

grid(-50,-50,25,25,5,5) {
    cube([10,10,10],center=true);
    cube([10,10,10],center=true);
    cube([10,10,10],center=true);    
    cube([10,10,10],center=true);
    //.. continue to create 25 cubes total    
}

将立方体排列在一个漂亮的网格中。

但是我最初的希望和意图是像这样使用它:

grid(-50,-50,25,25,5,5) {
    for(i=[0:1:24]) {
        cube([10,10,10],center=true);
    } 
}

失败是因为 for 运算符返回一个组而不是一组子级。

为什么for要添加一个组开始?(也导致需要intersection_for

有没有办法让我的网格操作员模块来处理组的孩子?

标签: openscad

解决方案


我个人希望 for() 中元素的分组/联合在某个时候成为可选的。

如果您不介意从源代码编译 OpenSCAD,您可以在今天尝试一下。存在一个持续存在的问题Lazy union (aka. no implicit union) 和一个补丁Make for() UNION 可选


推荐阅读