圆形边缘的方法openCAD

时间:2015-10-15 11:00:30

标签: openscad

是否有一种简单的方法/功能来为openscad对象舍入边缘?

e.g. round the edges of the cylinders

5 个答案:

答案 0 :(得分:3)

minkowski()是您在几何体的所有边上进行舍入的朋友。 minkowski()也非常慢,只能用于最终渲染。您还可以使用其他结构更有效地实现具有圆边的基元。

$fn=60;

module drawLedgeRing()
{
    difference()
    {
        cylinder(4,10,10);

        translate([0,0,-1])
        cylinder(4,6,6);

        translate([0,0,2])
        cylinder(4,8,8);
    }
}

minkowski()
{
    drawLedgeRing();
    sphere(.25);
}

//drawLedgeRing();

答案 1 :(得分:3)

制造圆形圆柱体可能有很多方法。一种方法是制作2个甜甜圈形状的物体并将其外壳

hull(){
rotate_extrude() translate([r1,0,0]) circle(r2);
rotate_extrude() translate([r1,0,h1]) circle(r2);
}

答案 2 :(得分:3)

我一直在寻找3D打印乐器盒的圆角块。 阅读了较早的答案之后,我研究了船体(不是城镇!:-) 在一个方块的角上制作8个相同的球体并将它们包起来看起来不错。

module radiusedblock(xlen,ylen,zlen,radius){
hull(){
translate([radius,radius,radius]) sphere(r=radius);
translate([xlen + radius , radius , radius]) sphere(r=radius);
translate([radius , ylen + radius , radius]) sphere(r=radius);    
translate([xlen + radius , ylen + radius , radius]) sphere(r=radius);
translate([radius , radius , zlen + radius]) sphere(r=radius);
translate([xlen + radius , radius , zlen + radius]) sphere(r=radius);
translate([radius,ylen + radius,zlen + radius]) sphere(r=radius);
translate([xlen + radius,ylen + radius,zlen + radius]) sphere(r=radius);
       }
}
radiusedblock(30,40,50,5);

答案 3 :(得分:1)

要围绕一个圆柱体,你应该使用类似HULL命令的两个球体。

它将制作一个管子,每个球体都是管子的盖子,将它们包裹在一个新物体中。

您可以使用它来使用minkowski来圆柱化。

气缸和圆管之间的minkowski。如果将球体与立方体合并,它也会绕长管区域并使其怀孕。船体非常有用,例如,你可以做100多个船体命令,而不是挤压复杂的东西。

同样检查来自thingiverse的Fibonaci球体是否有趣的球体,尽管它不是对称的,因为它最好在管子上。

答案 4 :(得分:0)

我今天需要同样的东西,这里的答案只是半有用的,所以我实现了自己的模块。随时使用/共享:)

module roundedcube(xx, yy, height, radius) {

difference(){

    cube([xx,yy,height]);

    difference(){
        translate([-.5,-.5,-.2])
        cube([radius+.5,radius+.5,height+.5]);

        translate([radius,radius,height/2])
        cylinder(height,radius,radius,true);
    }
    translate([xx,0,0])
    rotate(90)
    difference(){
        translate([-.5,-.5,-.2])
        cube([radius+.5,radius+.5,height+.5]);

        translate([radius,radius,height/2])
        cylinder(height,radius,radius,true);
    }

    translate([xx,yy,0])
    rotate(180)
    difference(){
        translate([-.5,-.5,-.2])
        cube([radius+.5,radius+.5,height+.5]);

        translate([radius,radius,height/2])
        cylinder(height,radius,radius,true);
    }

    translate([0,yy,0])
    rotate(270)
    difference(){
        translate([-.5,-.5,-.2])
        cube([radius+.5,radius+.5,height+.5]);

        translate([radius,radius,height/2])
        cylinder(height,radius,radius,true);
    }
}
}