9

是否有一种简单的方法/功能可以为 openscad 对象圆边?

例如,围绕圆柱体的边缘

4

5 回答 5

12

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();
于 2015-10-22T19:41:28.033 回答
6

我正在寻找一个圆角块来 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);
于 2020-05-24T18:49:46.083 回答
5

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

hull(){
rotate_extrude() translate([r1,0,0]) circle(r2);
rotate_extrude() translate([r1,0,h1]) circle(r2);
}
于 2020-05-04T17:40:56.590 回答
3

要使圆柱体变圆,您应该对两个球体使用 HULL 命令之类的命令。

它将通过将它们包裹成一个新对象来制作一个管子,其中每个球体都是管子的盖子。

你可以用它来用 minkowski 把你的圆柱体弄圆。

圆柱体和圆管之间的 minkowski。如果将球体与立方体合并,它也会使长管区域变圆并使其怀孕。Hull 非常有用,例如,您可以执行 100ds 的 hull 命令,而不是对复杂的东西进行挤压。

还要检查来自thingiverse 的斐波那契球体以获得有趣的球体,尽管它不是对称的,最好在管子上。

于 2015-11-06T03:23:46.997 回答
1

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

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);
    }
}
}
于 2019-04-01T17:03:04.950 回答