96 lines
No EOL
2.3 KiB
OpenSCAD
96 lines
No EOL
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("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();
|
|
}/**/ |