Height=20;
Feet_size=30;
Diameter=8;
Text="3D";
Text_Size=6;
Thickness=0.8;
my_object();
module my_object()
{
// Creates the pen clip
translate([0,-Diameter/2,0])
{
difference()
{
difference()
{
cylinder(h=Height,r=Diameter/2+Thickness, center=true,$fn=100);
cylinder(h=Height+1,r=Diameter/2, center=true,$fn=100);
}
translate([0,-2.75,-(Height+1)/2])
cube([20,5.5,Height+1]);
}
translate([sqrt((Diameter)/2*(Diameter)/2-2.75*2.75)+0.8,2.75,-Height/2])
color("black",0.5)
cylinder(Height, r=0.8,$fn=100);
mirror([0,1,0])
translate([sqrt((Diameter)/2*(Diameter)/2-2.75*2.75)+0.8,2.75,-Height/2])
color("white",0.5)
cylinder(Height, r=0.8,$fn=100);
}
difference()
{
// Create the base with the text
union()
{
translate([-(Feet_size+sqrt((Diameter)/2*(Diameter)/2-(Diameter-1.6)/2*(Diameter-(2.5*Thickness))/2)),-Thickness,-Height/2])
color("red",0.5)
cube([Feet_size,Thickness,Height]);
translate([-(Feet_size/2+Diameter/2),-Thickness,0])
rotate([90,0,0])
linear_extrude(0.4)
text(Text,font="font:style=bold", halign="center", valign = "center",size = Text_Size);
}
// Cuts the filet
union()
{
translate([-(Feet_size+sqrt((Diameter)/2*(Diameter)/2-(Diameter-(2.5*Thickness))/2*(Diameter-(2.5*Thickness))/2))-0.01,-2.5,-Height/2-0.01])
difference()
{
cube([2.5,5,2.5]);
translate([2.5,5.5,2.5])
rotate([90,0,0])
color("purple")
cylinder(h=6,r=2.5,$fn=100);
}
mirror([0,0,1])
translate([-(Feet_size+sqrt((Diameter)/2*(Diameter)/2-(Diameter-(2.5*Thickness))/2*(Diameter-(2.5*Thickness))/2))-0.01,-2.5,-Height/2-0.01])
difference()
{
cube([2.5,5,2.5]);
translate([2.5,5.5,2.5])
rotate([90,0,0])
cylinder(h=7,r=2.5,$fn=100);
}
}
}
}