For loop 如何使用openscad/for循环在立方体中打洞?
我想在每个立方体上打个洞。 代码如下:For loop 如何使用openscad/for循环在立方体中打洞?,for-loop,rotation,cube,openscad,For Loop,Rotation,Cube,Openscad,我想在每个立方体上打个洞。 代码如下: y=45; for (i=[1:8]){ z = y*i; difference(){ rotate([0,0,z]) translate([57,0,-5]) cube(center = true,[5,10,10]); rotate([90,90,z]) translate([6,0,-60]) cylinder(5,2,2); } } // This is a reference,
y=45;
for (i=[1:8]){
z = y*i;
difference(){
rotate([0,0,z]) translate([57,0,-5]) cube(center = true,[5,10,10]);
rotate([90,90,z]) translate([6,0,-60]) cylinder(5,2,2);
}
}
// This is a reference, translate([6,0,-60]) is correct position
rotate([90,90,z]) translate([16,0,-60]) cylinder(5,2,2);
为什么
不在for循环中工作?
当
z
手动设置为45、90、135、180…315时,孔是正确的。因此主回路将定位围绕原点旋转的长方体
以45度倍数的角度。在循环中,你
现在我们要画长方体,然后,相对于
在每个长方体的位置上,再进行一些变换(旋转)
和平移)以使圆柱体通过
长方体(如果圆柱体的高度大于
长方体的侧面,以便您可以实际看到它穿过):
现在您知道位置是正确的,可以应用布尔差分并获得每个长方体中心的孔:
y=45;
for (i=[1:8]){
z = y*i;
rotate([0,0,z]) translate([57,0,-5])
difference() {
cube(center=true,[5,10,10]);
rotate([0,90,0]) translate([0,0,-5]) cylinder(r=2,h=10,$fn=100) ;
}
}
您可以发现,由于旋转不同,圆柱体的所有。坐标都相差很远。首先在原点附近的一个方便位置组合零件,最后移动到位,就像旋转([0,0,z])平移([57,0,-5])差({cube(center=true,[5,10,10]);旋转([0,90,0])圆柱体(6,2,2,center=true);}
y=45;
for (i=[1:8]){
z = y*i;
rotate([0,0,z]) translate([57,0,-5])
{
cube(center=true,[5,10,10]);
rotate([0,90,0]) translate([0,0,-5]) cylinder(r=2,h=10,$fn=100);
};
}
y=45;
for (i=[1:8]){
z = y*i;
rotate([0,0,z]) translate([57,0,-5])
difference() {
cube(center=true,[5,10,10]);
rotate([0,90,0]) translate([0,0,-5]) cylinder(r=2,h=10,$fn=100) ;
}
}