fondlecube/fondlecube.scad

96 lines
2.3 KiB
OpenSCAD

$fn = 120;
fondleCubeDims = [45,45,45];
companionCubeDims = [100,100,100];
use <lib/mirrorcopy.scad>
use <lib/metric_bolts.scad>
//cube(fondleCubeDims,center=true);
//#cube(companionCubeDims, center=true);
module companionCube(){
scale([10,10,10])
scale([1/2.54,1/2.54,1/2.54])
translate([-25.4/2,-25.4/2,-25.4/2])
import("original_sources/Weighted_Companion_Cube.stl");
}
module body(){
difference(){
companionCube();
mirrorCopy([1,0,0],[0,0,1],[0,1,0]){
translate([35,-35.5,35])
rotate([90,0,0])
metricCapheadAndBolt(6, 20, chamfer=false,recessCap=1);
// bolt finger holes
hull(){
translate([35,-22,35])
rotate([90,0,0])cylinder(h=1,d=15, center=true);
translate([35,0,35])
rotate([90,0,0])cylinder(h=1,d=15, center=true);
translate([0,-22,0])
rotate([90,0,0])cylinder(h=1,d=15, center=true);
translate([0,0,0])
rotate([90,0,0])cylinder(h=1,d=15, center=true);
}
}
}
// Heart-removers
rotate([0,0,0])
mirrorCopy([0,0,1])
translate([0,0,46.337-2])cylinder(h=5,d=30, center=true);
rotate([90,0,0])
mirrorCopy([0,0,1])
translate([0,0,46.337-2])cylinder(h=5,d=30, center=true);
rotate([0,90,0])
mirrorCopy([0,0,1])
translate([0,0,46.337-2])cylinder(h=5,d=30, center=true);
}
module centerSlice(){
cube([100,75,110], center=true);
}
module frontSlice(){
cube([100,75,110], center=true);
translate([0,75,0])cube([100,75,110], center=true);
}
module rearSlice(){
cube([100,75,110], center=true);
translate([0,-75,0])cube([100,75,110], center=true);
}
// center part
module center(){
intersection(){
difference(){
body();
cube(fondleCubeDims + [0,500,0], center=true);
}
centerSlice();
}
}
module front(){
difference(){
body();
frontSlice();
}
}
module rear(){
difference(){
body();
rearSlice();
}
}
if(!$preview){
center();
translate([0,-50,0])front();
translate([0,+50,0])rear();
}else{
#body();
}/**/