是否有一种简单的方法/功能来为openscad对象舍入边缘?
答案 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);
}
}
}