Tux Spardose for 3D Printing

master
kreativmonkey 7 years ago
commit 5493176d1e

@ -0,0 +1,283 @@
// Tux-Spardose
// Forked from runeman.org/3d/tux
// Modified by Kreativmonkey 04.2018
//
// Licence: GPLv3
/////////////////////////////////////////////////////////////////////////
////////////////// VARIABLES ////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
// Dimention in mm
hight=200;
wall=5;
// Numb of Fragments
$fn=20;
inside=true;
///// Render
// verschluss
// Tux
renderer = "inside";
//////////////////////////////////////////////////////////////////////////
////////////////// RENDERS ///////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
if (renderer == "verschluss") {
translate([0,0, hight*0.06]) rotate([180,0,0]) verschluss(hight);
}
if (renderer == "Tux") {
difference(){
tux(hight);
if( inside == true ){
inside(hight);
}
}
}
if (renderer == "inside"){
difference(){
tux(hight);
cube(200);
}
}
////////////////////////////////////////////////////////////////////////
/////////////////// MODULES ////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////
module verschluss(size){
translate([0,0,size*0.05]) cube([size*0.4, size*0.05, size*0.02], center=true);
difference(){
union(){
// body
translate([0, 0, size*0.01]) cylinder(r=size*0.18, h=size*0.05);
// bottom
cylinder(r1=size*0.21, r2=size*0.18 , h=size*0.015);
}
cylinder(r1=size*0.16, r2=size*0.14 , h=size*0.02);
}
translate([0,0,size*0.022/2]) cube([size*0.322, size*0.032, size*0.022], center=true);
}
module inside(size){
// innerpart
difference(){
union(){
body(size*0.965);
translate([0,0,size*0.1]) cylinder(r=size*0.11, size*0.82);
}
difference(){
translate([0, 0, size*0.01]) cylinder(r=size*0.30, h=size*0.05);
translate([0, 0, size*0.04]) cylinder(r=size*0.22, h=size*0.02);
translate([0, 0, size*0.02]) cube([size*0.06, size*0.41, size*0.07], center=true);
}
}
// Coinhole
#translate([0,size*0.05,size*0.85]) rotate([0,0,90]) cube([3,28,size*0.3], center=true);
difference(){
union(){
translate([0,1,size*0.83])
rotate([30,0,0])
resize(newsize=[size*0.30,size*0.30,size*0.30])
sphere(size*0.16);
}
translate([0,-size*0.16,size*0.83])
cube([size*0.25,size*0.10,size*0.25], center=true);
}
// Verschluss mit aussparungen.
verschluss(size*1.01);
translate([0, 0, size*0.02]) cube([size*0.06, size*0.41, size*0.07], center=true);
translate([0, 0, size*0.04]) cube([size*0.41, size*0.06, size*0.006], center=true);
}
module tux(size){
difference(){
union(){
arm(size, "right");
arm(size, "left");
foot(size, "right");
foot(size, "left");
}
if( inside == true ){
body(size, wall);
arm(size, "right", wall);
arm(size, "left", wall);
foot(size, "right", wall);
foot(size, "left", wall);
}
}
difference(){
union(){
body(size);
head(size);
}
body(size, wall+5);
head(size, wall+5);
translate([0,0,-size*0.7]) cube([size*1.4,size*1.4,size*1.4], center=true);
}
}
module head(size, wthikness = 0){
difference(){
union(){
// HEAD
translate([0,1,size*0.82])
rotate([30,0,0])
resize(newsize=[size*0.36-wthikness,size*0.34-wthikness,size*0.34-wthikness])
sphere(size*0.16);
}
// Eyeholes
translate([-size*0.07,-size*0.19,size*0.85]) rotate([80,-5,-10]) resize(newsize=[size*0.1, size*0.15, size*0.12]) cylinder(r=size*0.12, h=size*0.01, center=true);
translate([size*0.07,-size*0.19,size*0.85]) rotate([80,5,10]) resize(newsize=[size*0.1, size*0.15, size*0.12]) cylinder(r=size*0.12, h=size*0.01, center=true);
translate([0,-size*0.155,size*0.85]) rotate([-10,0,0]) resize(newsize=[size*0.15, size*0.02,size*0.15])sphere(size*0.02);
}
// Pupills
translate([size*0.05,-size*0.13,size*0.83])
rotate([0,7,0])
resize(newsize=[size*0.075, size*0.044, size*0.1])
sphere(3);
translate([-size*0.05,-size*0.13,size*0.83])
rotate([0,-7,0])
resize(newsize=[size*0.075, size*0.044, size*0.1])
sphere(3);
// beak
hull(){
// tip
translate([0,-size*0.22,size*0.74])
resize(newsize=[size*0.11-wthikness,size*0.15-wthikness,size*0.044-wthikness])
sphere(2);
//chin
translate([0,-size*0.05,size*0.73])
resize(newsize=[size*0.25-wthikness,size*0.03-wthikness,size*0.22-wthikness])
sphere(2);
//nose
translate([0,-10,size*0.77])
rotate([5,0,0])
resize(newsize=[size*0.01-wthikness,size*0.22-wthikness,size*0.044-wthikness])
sphere(2);
}
}
// BODY
module body(size, wthikness = 0){
// body
difference(){
hull(){
translate([0,0,15])
resize(newsize=[size*0.60-wthikness,size*0.52-wthikness,size*0.60-wthikness])
sphere((size*0.60+wthikness)/2, center=true);
//neck
translate([0,1.5,size*0.60])
sphere(size*0.17-wthikness/2);
//back top
translate([0,size*0.11,size*0.52])
rotate([20,0,0])
resize(newsize=[size*0.34-wthikness,size*0.22-wthikness,size*0.40-wthikness])
sphere(2);
//back bottom
translate([0,size*0.22,size*0.30])
rotate([10,0,0])
resize(newsize=[size*0.22-wthikness,size*0.11-wthikness,size*0.44-wthikness])
sphere(2);
}
translate([0,0,-size*0.35+wthikness])
cube([size*1.40-wthikness,size*1.40-wthikness,size*0.70-wthikness], center=true);
}
//tail
translate([0,size*0.24,size*0.09])
sphere(size*0.09-wthikness/2);
}
// ARMS
module arm(size, side, wthikness = 0){
if(side == "right"){
hull(){
translate([-size*0.21,0,size*0.45])
rotate([-20,110,0])
resize(newsize=[size*0.30-wthikness,size*0.22-wthikness,size*0.15-wthikness])
sphere(2);
translate([-size*0.19,-size*0.15,size*0.30])
rotate([60,70,100])
resize(newsize=[size*0.22-wthikness,size*0.30-wthikness,size*0.10-wthikness])
sphere(2);
}
}
if(side == "left"){
// left arm
hull(){
translate([size*0.21,0,size*0.45])
rotate([20,70,0])
resize(newsize=[size*0.30-wthikness,size*0.22-wthikness,size*0.15-wthikness])
sphere(2);
translate([size*0.27,-size*0.22,size*0.30])
rotate([80,20,30])
resize(newsize=[size*0.15-wthikness,size*0.25-wthikness,size*0.10-wthikness])
sphere(2);
}
}
}
// FOOT
module foot(size, side="none", wthikness = 0){
if(side == "right"){
translate([-size*0.20,-size*0.25,size*0.074]) rotate([85,30,140]) complete();
}
// left foot
if(side == "left"){
translate([size*0.20,-size*0.25,size*0.074]) rotate([85,-30,220]) complete();
}
if(side == "none"){
complete();
}
module complete(){
hull(){
union(){
translate([0,-1.8,size*0.074])
sphere(size*0.074-wthikness);
}
finger();
}
rotate([0,0,30]) finger();
rotate([0,0,-30]) finger();
}
module finger(){
hull(){
resize(newsize=[size*0.15-wthikness,size*0.15-wthikness,size*0.074-wthikness])
sphere(2);
translate([0,size*0.20,0])
resize(newsize=[size*0.18-wthikness,size*0.22-wthikness,size*0.074-wthikness])
sphere(2);
}
}
}
Loading…
Cancel
Save