for-loop - 如何使用 openscad/for-loop 在立方体上打洞?

标签 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, translate([6,0,-60]) is correct position
rotate([90,90,z]) translate([16,0,-60]) cylinder(5,2,2); 

为什么

rotate([90,90,z]) translate([6,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])
    {
        cube(center=true,[5,10,10]);
        rotate([0,90,0]) translate([0,0,-5]) cylinder(r=2,h=10,$fn=100);
    };
}

enter image description here

现在您知道位置是正确的,您可以应用 bool 差并获得每个长方体中心的孔:

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


enter image description here

您可以找到所有code for this here .

关于for-loop - 如何使用 openscad/for-loop 在立方体上打洞?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65445132/

相关文章:

JAVA:for循环内的if语句和退出for循环

css - 是否有一个简单的修复方法可以在路径而不是中心 anchor 上旋转 css 椭圆形阴影?

Jquery 旋转,在 mouseenter 上运行,在 mouseout 上停止

sql-server - SSAS:来自多个多维数据集实例的中央多维数据集

c++ - 旋转二维整数数组

python: `for i in obj.func()` 每次迭代都会重新运行 `func` 吗?

sql - SSAS Cube Excel 数据透视表隐藏字段

.net - .NET 的开放、免费、多维数据集数据结构

python - 如何使用 python 中的循环删除字符串中的空格?

iPhone 添加惯性/动量物理来为 "wheel of fortune"设置动画,如旋转控制