0
我试图在我的Printrbot上打印出一个300mm的空心球体,将球体的内部空腔塑造成一个规则的外接多面体,并根据外接多面体的边分割球体。我首先尝试使用立方体,结果是6面有3d可打印的平底,但是由于打印机的构建体积有限(150x150x150毫米),所以得到的面的〜175毫米边缘不适合。基于外接十二面体的分裂空心球体
下一个合理的阶梯似乎是将被限制的多面体改变成十二面体并且打印出12个面而不是6个面,但是,我在计算如何正确地将五边形面投影到球面上并切片时遇到了一些麻烦相应地增加。有什么方法可以获得球体和投影十二面体的交点?我目前的代码如下。
$fn = 72;
diameter=300;
side();
module side()
{
difference()
{
hollow_sphere(diameter);
rotate([180,0,0])
fiveSideMask();
}
}
// A cubic mask to remove all sides but one from the circle
module fiveSideMask()
{
union()
{
rotate([45,0,0])
translate([0,-diameter/4, 0])
cube([diameter, diameter/2, diameter], center=true);
rotate([-45,0,0])
translate([0,-diameter/4, 0])
cube([diameter, diameter/2, diameter], center=true);
rotate([0,0,45])
translate([0,-diameter/4, 0])
cube([diameter, diameter/2, diameter], center=true);
rotate([0,0,-45])
translate([0,-diameter/4, 0])
cube([diameter, diameter/2, diameter], center=true);
}
}
module hollow_sphere(diameter=300, shell_thickness=5)
{
difference()
{
sphere(d=diameter, center=true);
//Sphere internal cavity
//sphere(d=(diameter-(shell_thickness*2)), center=true);
//Cube internal cavity
cube(CubeEdgeFromDiag(diameter - shell_thickness * 2), center=true);
//Dodecahedron internal cavity
//rotate([90,0,0])
//dodecahedron(225);
}
}
function CubeEdgeFromDiag(diagLength) = (sqrt(3) * diagLength)/3;
module dodecahedron(size)
{
dihedral = 116.565;
intersection()
{
box(size);
intersection_for(i=[1:5])
{
rotate([dihedral, 0, 360/5 * i]) box(size);
}
}
}
module box(size)
{
cube([2*size, 2*size, size], center = true);
}