FOSHelter/src/subassembly.scad

519 lines
13 KiB
OpenSCAD

include <variables.scad>;
use <modules/quadpipe.scad>;
use <modules/corner.scad>;
use <modules/hinge.scad>;
module core(){
// front left bottom corner
corner_core();
// strut from front left bottom corner to front right bottom corner
translate([core_strut_width + quadpipe_side, 0, 0]){
rotate([0, 0, 90]){
quadpipe(core_strut_width);
}
}
// front right bottom corner
translate([core_width, 0, 0]){
rotate([0, 0, 90]){
corner_core();
}
}
// strut from front left bottom corner to front left battery corner
translate([0, quadpipe_side, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(core_strut_battery_height);
}
}
// strut from front right bottom corner to front right battery corner
translate([core_strut_width + quadpipe_side, quadpipe_side, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(core_strut_battery_height);
}
}
// front left battery corner
translate([0, 0, core_battery_height]){
corner_battery();
}
// front right battery corner
translate([core_width, 0, core_battery_height]){
rotate([0, 0, 90]){
corner_battery();
}
}
// strut from front left battery corner to front right battery corner
translate([core_strut_width + quadpipe_side, 0, core_strut_battery_height + quadpipe_side]){
rotate([0, 0, 90]){
quadpipe(core_strut_width);
}
}
// strut from front left bottom corner to back left bottom corner
translate([0, quadpipe_side, 0]){
quadpipe(core_strut_length);
}
// strut from front right bottom corner to back right bottom corner
translate([core_strut_width + quadpipe_side, quadpipe_side, 0]){
quadpipe(core_strut_length);
}
// strut from front left battery corner to back left battery corner
translate([0, quadpipe_side, core_battery_height - quadpipe_side]){
quadpipe_rail(core_strut_length);
}
// strut from front right battery corner to back right battery corner
translate([core_strut_width + quadpipe_side * 2, quadpipe_side, core_battery_height]){
rotate([0, 180, 0]){
quadpipe_rail(core_strut_length);
}
}
// back left bottom corner
translate([0, core_length, 0]){
rotate([0, 0, -90]){
corner_core();
}
}
// back right bottom corner
translate([core_width, core_length, 0]){
rotate([0, 0, 180]){
corner_core();
}
}
// strut from back left bottom corner to back right bottom corner
translate([core_strut_width + quadpipe_side, core_strut_length + quadpipe_side, 0]){
rotate([0, 0, 90]){
quadpipe(core_strut_width);
}
}
// strut from back left bottom corner to back left battery corner
translate([0, core_length, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(core_strut_battery_height);
}
}
// strut from back right bottom corner to back right battery corner
translate([
core_strut_width + quadpipe_side,
core_strut_length + quadpipe_side * 2 , // quadpipe_side * 2 accounts for offset caused by rotation
quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(core_strut_battery_height);
}
}
// back left battery corner
translate([0, core_length, core_battery_height]){
rotate([0, 0, -90]){
corner_battery();
}
}
// back right battery corner
translate([core_width, core_length, core_battery_height]){
rotate([0, 0, 180]){
corner_battery();
}
}
// strut from back left battery corner to back right battery corner
translate([core_strut_width + quadpipe_side, core_strut_length + quadpipe_side, core_strut_battery_height + quadpipe_side]){
rotate([0, 0, 90]){
quadpipe(core_strut_width);
}
}
// strut from front left battery corner to front left top corner
translate([0, quadpipe_side, core_battery_height]){
rotate([90, 0, 0]){
quadpipe(core_strut_height);
}
}
// strut from front right battery corner to front right top corner
translate([core_strut_width + quadpipe_side, quadpipe_side, core_battery_height]){
rotate([90, 0, 0]){
quadpipe(core_strut_height);
}
}
// strut from back left battery corner to front back top corner
translate([0, core_length, core_battery_height]){
rotate([90, 0, 0]){
quadpipe(core_strut_height);
}
}
// strut from back right battery corner to back right top corner
translate([core_strut_width + quadpipe_side, core_length, core_battery_height]){
rotate([90, 0, 0]){
quadpipe(core_strut_height);
}
}
// front left top corner
translate([0, 0, core_height]){
rotate([0, 90, 0]){
corner_core();
}
}
// front right top corner
translate([core_width, 0, core_height]){
rotate([0, 180, 0]){
corner_core();
}
}
// back left top corner
translate([0, core_length, core_height]){
rotate([180, 0, 0]){
corner_core();
}
}
// back right top corner
translate([core_width, core_length, core_height]){
rotate([90, 180, 0]){
corner_core();
}
}
// strut from front left top to back left top
translate([0, quadpipe_side, core_height - quadpipe_side]){
quadpipe_rail(core_strut_length);
}
// strut from front right top to back right top
translate([core_strut_width + quadpipe_side * 2, quadpipe_side, core_height]){
rotate([0, 180, 0]){
quadpipe_rail(core_strut_length);
}
}
// strut from front left top to front right top
translate([quadpipe_side, quadpipe_side, core_height - quadpipe_side]){
rotate([0, 0, -90]){
quadpipe(core_strut_width);
}
}
// strut from back left top to back right top
translate([quadpipe_side, core_length, core_height - quadpipe_side]){
rotate([0, 0, -90]){
quadpipe(core_strut_width);
}
}
}
/*module foldwall(){
// front bottom corner
translate([quadpipe_side, 0, 0]){
rotate([0,0, 90]){
corner();
}
}
// strut from front bottom left corner to back bottom corner
translate([0, quadpipe_side, 0]){
quadpipe(core_strut_length);
}
// back bottom corner
translate([0, core_length, 0]){
rotate([0,0, 270]){
corner();
}
}
//strut from top bottom corner to top top corner
translate([0, quadpipe_side, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(core_strut_height);
}
}
// strut from back bottom to back top
translate([0, core_length, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(core_strut_height);
}
}
// front top corner
translate([quadpipe_side, 0, core_strut_height + 2 * quadpipe_side]){
rotate([0, 90, 90]){
corner();
}
}
// strut from front top corner to back top corner
translate([0, quadpipe_side, core_strut_height + quadpipe_side]){
quadpipe(core_strut_length);
}
// front back corner
translate([0, core_length, core_strut_height + quadpipe_side * 2]){
rotate([0,90,-90]){
corner();
}
}
}*/
module wall_floor(){ // the walls that fold down to be the floor
// front bottom corner
translate([quadpipe_side, 0, 0]){
rotate([0,0, 90]){
corner();
}
}
// strut from front bottom corner to back bottom corner
translate([quadpipe_side, quadpipe_side, 0]){
rotate([0, -90, 0]){
quadpipe_rail(core_strut_length);
}
}
// back bottom corner
translate([0, core_length, 0]){
rotate([0,0, 270]){
corner();
}
}
//strut from front bottom corner to front top corner
translate([0, quadpipe_side, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(wall_floor_strut_height);
}
}
// strut from back bottom to back top
translate([0, core_length, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(wall_floor_strut_height);
}
}
// front top corner
translate([quadpipe_side, 0, wall_floor_strut_height + quadpipe_side * 2]){
rotate([0, 90, 90]){
corner();
}
}
// strut from front top corner to back top corner
translate([0, quadpipe_side, wall_floor_strut_height + quadpipe_side * 2]){
rotate([0, 90, 0]){
quadpipe_rail(core_strut_length);
}
}
// front back corner
translate([0, core_length, wall_floor_strut_height + quadpipe_side * 2]){
rotate([0,90,-90]){
corner();
}
}
// place hinge_side's at bottom
color("green"){
translate([quadpipe_side / 2, core_length, -quadpipe_side / 2 - quadpipe_thickness]){
//translate([quadpipe_side * 2.5, 0, core_battery_height - quadpipe_side / 2]){
rotate([180,0,-90]){
hinge_side_array();
}
}
}
// place hinge_270 on top
translate([0, 0, wall_floor_height + quadpipe_side - hinge_rail_thickness]){
rotate([0, 0, 90]){
hinge_270_array();
}
}
}
module wall_ceiling(){ // the walls that fold down to be the ceiling
// front bottom corner
translate([quadpipe_side, 0, 0]){
rotate([0,0, 90]){
corner();
}
}
// strut from front bottom corner to back bottom corner
translate([quadpipe_side, quadpipe_side, 0]){
rotate([0, -90, 0]){
quadpipe_rail(core_strut_length);
}
}
// back bottom corner
translate([0, core_length, 0]){
rotate([0,0, 270]){
corner();
}
}
//strut from front bottom corner to front top corner
translate([0, quadpipe_side, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(wall_ceiling_strut_height);
}
}
// strut from back bottom to back top
translate([0, core_length, quadpipe_side]){
rotate([90, 0, 0]){
quadpipe(wall_ceiling_strut_height);
}
}
// front top corner
translate([quadpipe_side, 0, wall_ceiling_strut_height + quadpipe_side * 2]){
rotate([0, 90, 90]){
corner();
}
}
// strut from front top corner to back top corner
translate([0, quadpipe_side, wall_ceiling_strut_height + quadpipe_side * 2]){
rotate([0, 90, 0]){
quadpipe_rail(core_strut_length);
}
}
// front back corner
translate([0, core_length, wall_ceiling_strut_height + quadpipe_side * 2]){
rotate([0,90,-90]){
corner();
}
}
// place hinge_side's at bottom
//translate([quadpipe_side, core_length, hinge_rail_height + quadpipe_thickness]){
translate([quadpipe_side / 2, core_length, (quadpipe_side / 2 + quadpipe_thickness) * -1]){
rotate([180,0,-90]){
hinge_side_array();
}
}
// place hinge_270 on top
translate([0, 0, wall_ceiling_height + quadpipe_side - hinge_rail_thickness]){
rotate([0, 0, 90]){
hinge_270_array();
}
}
}
module wall_side() { // A wall that folds into being… a wall! What magic is this!?
// bottom hinge array
translate([0, core_length, quadpipe_side]){
rotate([0, 180, 90]){
hinge_270_array();
}
}
// bottom strut
translate([quadpipe_side, quadpipe_side , 2 * quadpipe_side + hinge_rail_thickness]){
rotate([0, -90, 0]){
quadpipe_rail(core_strut_length);
}
}
// front bottom corner
translate([quadpipe_side, 0, 2 * quadpipe_side + hinge_rail_thickness]){
rotate([0,0, 90]){
corner();
}
}
// back bottom corner
translate([0, core_length, 2 * quadpipe_side + hinge_rail_thickness]){
rotate([0,0, -90]){
corner();
}
}
// front strut
translate([0, quadpipe_side, 3 * quadpipe_side + hinge_rail_thickness]){
rotate([90, 0, 0]){
quadpipe(wall_side_strut_height);
}
}
// back strut
translate([0, core_length, 3 * quadpipe_side + hinge_rail_thickness]){
rotate([90, 0, 0]){
quadpipe(wall_side_strut_height);
}
}
// front top corner
translate([0, 0, 4 * quadpipe_side + hinge_rail_thickness + wall_side_strut_height]){
rotate([180,0, 90]){
corner();
}
}
// back top corner
translate([0, core_length, 4 * quadpipe_side + hinge_rail_thickness + wall_side_strut_height]){
rotate([0, 90, -90]){
corner();
}
}
// top strut
translate([0, quadpipe_side, 4 * quadpipe_side + hinge_rail_thickness + wall_side_strut_height]){
rotate([0, 90, 0]){
quadpipe_rail(core_strut_length);
}
}
// top hinge array
translate([quadpipe_side, core_length, wall_side_strut_height + quadpipe_side + 2 * hinge_270_exposed_height]){
rotate([0, 0, -90]){
hinge_270_array();
}
}
}
// Place demo instances
core();
translate([core_width * 2, 0, 0]){
wall_floor();
}
translate([core_width * 3, 0, 0]){
wall_side();
}
translate([core_width * 4, 0, 0]){
wall_ceiling();
}