From 6448371d93e1df99e9ca4ef3e42ac2c4b375b16d Mon Sep 17 00:00:00 2001 From: Teddy Middleton-Smith Date: Wed, 18 Jun 2025 16:17:46 +0100 Subject: [PATCH] Unfinished changes. --- config.scad | 1 + models/glovebox_base/base_gasket.scad | 19 +++++ models/glovebox_base/base_gasket.stl | Bin 0 -> 1684 bytes models/glovebox_base/base_plate.scad | 17 +++++ models/glovebox_door/door_support_beam.scad | 8 ++- models/glovebox_door/glovebox_door.scad | 46 +++++++++--- models/glovebox_shell/glovebox_shell.scad | 74 +++++++++++++------- 7 files changed, 130 insertions(+), 35 deletions(-) create mode 100644 models/glovebox_base/base_gasket.scad create mode 100644 models/glovebox_base/base_gasket.stl create mode 100644 models/glovebox_base/base_plate.scad diff --git a/config.scad b/config.scad index 7dbedbb..6f5fbea 100644 --- a/config.scad +++ b/config.scad @@ -126,6 +126,7 @@ SECOND_MOMENT_OF_AREA_BEAM = ; echo("SECOND_MOMENT_OF_AREA_BEAM: ", SECOND_MOMENT_OF_AREA_BEAM); +R_BASE_PLATE = [R_EXTERNAL[0], R_EXTERNAL[1], 3]; T_DOOR = T_HDPE_SHEET + T_GASKET_RUBBER; echo("T_DOOR: ", T_DOOR, "mm"); diff --git a/models/glovebox_base/base_gasket.scad b/models/glovebox_base/base_gasket.scad new file mode 100644 index 0000000..9b4fd84 --- /dev/null +++ b/models/glovebox_base/base_gasket.scad @@ -0,0 +1,19 @@ + +include <../../config.scad>; + +module base_gasket() { + color("black") + difference() { + // Body + cube([R_EXTERNAL[0], R_EXTERNAL[1], T_GASKET_RUBBER], center = true); + // Workspace hole + cube([R_EXTERNAL[0] - W_DOOR_GASKET * 2, R_EXTERNAL[1] - W_DOOR_GASKET * 2, T_GASKET_RUBBER], center = true); + // Fastener holes + } + // Shopping + echo(str("EDPM rubber: Base Gasket ", R_EXTERNAL[0], "mm x ", R_EXTERNAL[1], "mm - x1")); +} + +$fn = 50; +// test output +base_gasket(); \ No newline at end of file diff --git a/models/glovebox_base/base_gasket.stl b/models/glovebox_base/base_gasket.stl new file mode 100644 index 0000000000000000000000000000000000000000..55028ad5239654684a7a67e2e465e429915322aa GIT binary patch literal 1684 zcmbu9JyHWP424zGq)VNfEX;1pP;dp(F~AXgvt))GfeUaG^z>s%_CkY;MC0hwdy?%u zeVpH(*N5%&`2KQ!y`%rGlN4wRe>Dl|xDkDS65aEj#4E>_6eE{}P+-o=G-9S>f$Vh` zx*j%aU(oP; + +module base_plate() { + color("darkgrey") + difference() { + // Body + cube(R_BASE_PLATE, center = true); + // Fastener holes + } + // Shopping + echo(str("Aluminium sheet: Base plate ", R_BASE_PLATE[0], "mm x ", R_BASE_PLATE[1], "mm x ", R_BASE_PLATE[2], "mm - x1")); +} + +$fn = 50; +// test output +base_plate(); \ No newline at end of file diff --git a/models/glovebox_door/door_support_beam.scad b/models/glovebox_door/door_support_beam.scad index 9cfce70..8ef2572 100644 --- a/models/glovebox_door/door_support_beam.scad +++ b/models/glovebox_door/door_support_beam.scad @@ -4,7 +4,13 @@ use <../common/c_channel_beam.scad>; module door_support_beam(length) { - color("darkgrey") c_channel_beam(length, W_DOOR_SUPPORT_BEAM, D_DOOR_SUPPORT_BEAM, T_DOOR_SUPPORT_BEAM, true); + color("darkgrey") { + // c_channel_beam(length, W_DOOR_SUPPORT_BEAM, D_DOOR_SUPPORT_BEAM, T_DOOR_SUPPORT_BEAM, true); + translate([0, 0, -length / 2]) union() { + cube([W_DOOR_SUPPORT_BEAM, T_DOOR_SUPPORT_BEAM, length], center = false); + cube([T_DOOR_SUPPORT_BEAM, D_DOOR_SUPPORT_BEAM, length], center = false); + } + } // Shopping echo(str("Rectangular Aluminium channel beam: Rectangular Aluminium channel beam ", length, "mm x ", W_DOOR_SUPPORT_BEAM, "mm x ", D_DOOR_SUPPORT_BEAM, "mm x ", T_DOOR_SUPPORT_BEAM, "mm - x1")); } diff --git a/models/glovebox_door/glovebox_door.scad b/models/glovebox_door/glovebox_door.scad index b534d87..377ad9c 100644 --- a/models/glovebox_door/glovebox_door.scad +++ b/models/glovebox_door/glovebox_door.scad @@ -58,37 +58,65 @@ module glovebox_door() { // Support beams color("darkgrey") { // Top + /* translate([ D_DOOR_SUPPORT_BEAM / 2 , -D_DOOR_SUPPORT_BEAM , W_DOOR_SUPPORT_BEAM / 2 ]) rotate([0, 90, 0]) - // door_support_beam(R_EXTERNAL[0] - D_DOOR_SUPPORT_BEAM); - import("./door_support_beam_on_x.stl"); - // Bottom + */ translate([ + 0 + , -D_DOOR_SUPPORT_BEAM + , T_DOOR_SUPPORT_BEAM + ]) rotate([0, 90, 180]) rotate([0, 0, 180]) + door_support_beam(R_EXTERNAL[0] - (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) * 2); + // import("./door_support_beam_on_x.stl"); + // Bottom + /* + translate([ -D_DOOR_SUPPORT_BEAM / 2 , -R_EXTERNAL[2] + D_DOOR_SUPPORT_BEAM , W_DOOR_SUPPORT_BEAM / 2 ]) rotate([0, 90, 180]) - // door_support_beam(R_EXTERNAL[0] - D_DOOR_SUPPORT_BEAM); - import("./door_support_beam_on_x.stl"); + */ + translate([ + 0 + , -R_EXTERNAL[2] - T_DOOR_SUPPORT_BEAM + , T_DOOR_SUPPORT_BEAM + ]) rotate([0, 90, 0]) + door_support_beam(R_EXTERNAL[0] - (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) * 2); + // import("./door_support_beam_on_x.stl"); // Left + /* translate([ -(R_EXTERNAL[0] / 2 - W_DOOR_SUPPORT_BEAM / 2) , -(R_EXTERNAL[2] - D_DOOR_SUPPORT_BEAM) / 2 , W_DOOR_SUPPORT_BEAM / 2 ]) rotate([90, -90, 0]) - // door_support_beam(R_EXTERNAL[2] - D_DOOR_SUPPORT_BEAM); - import("./door_support_beam_on_y.stl"); + */ + translate([ + -R_EXTERNAL[0] / 2 - T_DOOR_SUPPORT_BEAM + , -R_EXTERNAL[2] / 2 + , T_DOOR_SUPPORT_BEAM + ]) rotate([0, 90, -90]) + door_support_beam(R_EXTERNAL[2]); + // import("./door_support_beam_on_y.stl"); // Right + /* translate([ R_EXTERNAL[0] / 2 - W_DOOR_SUPPORT_BEAM / 2 , -R_EXTERNAL[2] / 2 - D_DOOR_SUPPORT_BEAM / 2 , W_DOOR_SUPPORT_BEAM / 2 ]) rotate([90, 90, 0]) - // door_support_beam(R_EXTERNAL[2] - D_DOOR_SUPPORT_BEAM); - import("./door_support_beam_on_y.stl"); + */ + translate([ + R_EXTERNAL[0] / 2 + T_DOOR_SUPPORT_BEAM + , -R_EXTERNAL[2] / 2 + , T_DOOR_SUPPORT_BEAM + ]) rotate([0, 90, 90]) + door_support_beam(R_EXTERNAL[2]); + // import("./door_support_beam_on_y.stl"); } } // Bolt holes diff --git a/models/glovebox_shell/glovebox_shell.scad b/models/glovebox_shell/glovebox_shell.scad index daac5e6..fbb809a 100644 --- a/models/glovebox_shell/glovebox_shell.scad +++ b/models/glovebox_shell/glovebox_shell.scad @@ -5,6 +5,7 @@ use <../common/washer.scad>; use <../fixings/angle_bracket_20_20.scad>; use <../fixings/door_hinge.scad>; use <../fixings/mitre_bracket.scad>; +use <../glovebox_base/base_plate.scad>; use <../glovebox_door/glovebox_door.scad>; use <../glovebox_rear_panel/glovebox_rear_panel.scad>; use <./skeleton_beam.scad>; @@ -27,7 +28,7 @@ module glovebox_shell(angle_door_from_closed) { translate([ 0 , R_SKELETON_BEAM_CENTRES[1] / 2 * (index_beam_on_y == 0 ? 1 : -1) - , L_LEG + D_BEAM_SKELETON / 2 + (index_beam_on_z == 0 ? 0 : R_SKELETON_BEAM_CENTRES[2]) + , L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + D_BEAM_SKELETON / 2 + (index_beam_on_z == 0 ? 0 : R_SKELETON_BEAM_CENTRES[2]) ]) rotate([0, 90, 0]) // skeleton_beam(length_beam_on_x); @@ -43,7 +44,7 @@ module glovebox_shell(angle_door_from_closed) { translate([ R_SKELETON_BEAM_CENTRES[0] / 2 * (index_beam_on_x == 0 ? 1 : -1) , 0 - , L_LEG + D_BEAM_SKELETON / 2 + (index_beam_on_z == 0 ? 0 : R_SKELETON_BEAM_CENTRES[2]) + , L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + D_BEAM_SKELETON / 2 + (index_beam_on_z == 0 ? 0 : R_SKELETON_BEAM_CENTRES[2]) ]) rotate([90, 0, 0]) // skeleton_beam(length_beam_on_y); @@ -51,12 +52,13 @@ module glovebox_shell(angle_door_from_closed) { // Joints } } + /* for (index_beam_on_x = [0 : 1 : COUNT_BASE_SUPPORT_BEAMS_ON_Y - 1]) { // Beams translate([ R_INTERNAL[0] / 2 - D_BEAM_SKELETON / 2 - OFFSET_X_BASE_BEAM_SUPPORTS - (index_beam_on_x) * (R_INTERNAL[0] - D_BEAM_SKELETON - OFFSET_X_BASE_BEAM_SUPPORTS * 2) / (COUNT_BASE_SUPPORT_BEAMS_ON_Y - 1) , 0 - , L_LEG - D_BEAM_SKELETON / 2 + , L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER - D_BEAM_SKELETON / 2 ]) rotate([90, 0, 0]) // skeleton_beam(R_EXTERNAL[1]); @@ -65,48 +67,51 @@ module glovebox_shell(angle_door_from_closed) { for (index_support_on_x = [0 : 1 : 1]) { for (index_support_on_y = [0 : 1 : 1]) { translate([ - R_INTERNAL[0] / 2 - D_BEAM_SKELETON / 2 - OFFSET_X_BASE_BEAM_SUPPORTS - (index_beam_on_x) * (R_INTERNAL[0] - D_BEAM_SKELETON - OFFSET_X_BASE_BEAM_SUPPORTS * 2) / (COUNT_BASE_SUPPORT_BEAMS_ON_Y - 1) - , 0 - , 0 - ]) - mirror([index_support_on_x, 0, 0]) mirror([0, index_support_on_y, 0]) translate([D_BEAM_SKELETON / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG]) - rotate([180, 0, 0]) - // angle_bracket_20_20(); - import("../fixings/angle_bracket_20_20.stl"); + R_INTERNAL[0] / 2 - D_BEAM_SKELETON / 2 - OFFSET_X_BASE_BEAM_SUPPORTS - (index_beam_on_x) * (R_INTERNAL[0] - D_BEAM_SKELETON - OFFSET_X_BASE_BEAM_SUPPORTS * 2) / (COUNT_BASE_SUPPORT_BEAMS_ON_Y - 1) + , 0 + , 0 + ]) + mirror([index_support_on_x, 0, 0]) mirror([0, index_support_on_y, 0]) translate([D_BEAM_SKELETON / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER]) + rotate([180, 0, 0]) + // angle_bracket_20_20(); + import("../fixings/angle_bracket_20_20.stl"); } } } - // translate([0, 0, L_LEG - D_BEAM_SKELETON / 2]) rotate([90, 0, 0]) skeleton_beam(R_EXTERNAL[1]); + */ + // translate([0, 0, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER - D_BEAM_SKELETON / 2]) rotate([90, 0, 0]) skeleton_beam(R_EXTERNAL[1]); // Z for (index_beam_on_x = [0 : 1 : 1]) { for (index_beam_on_y = [0 : 1 : 1]) { mirror([index_beam_on_x, 0, 0]) mirror([0, index_beam_on_y, 0]) { // Beams // Main chamber section - translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + D_BEAM_SKELETON + length_beam_on_z / 2]) + translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + D_BEAM_SKELETON + length_beam_on_z / 2]) // skeleton_beam(length_beam_on_z); color("silver") import("./skeleton_beam_for_shell_on_z.stl"); + /* // Chamber legs - translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG / 2]) + translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER / 2]) // skeleton_beam(length_beam_on_z); color("silver") import("./skeleton_beam_for_shell_leg.stl"); // Joints // Base - translate([R_INTERNAL[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG]) + translate([R_INTERNAL[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER]) rotate([180, 0, 180]) // angle_bracket_20_20(); import("../fixings/angle_bracket_20_20.stl"); - translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_INTERNAL[1] / 2, L_LEG]) + translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_INTERNAL[1] / 2, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER]) rotate([180, 0, -90]) // angle_bracket_20_20(); import("../fixings/angle_bracket_20_20.stl"); + */ // Top - inline /* - translate([R_EXTERNAL[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, R_EXTERNAL[2] - D_BEAM_SKELETON / 2 + L_LEG]) + translate([R_EXTERNAL[0] / 2, R_SKELETON_BEAM_CENTRES[1] / 2, R_EXTERNAL[2] - D_BEAM_SKELETON / 2 + L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER]) rotate([-90, 0, 0]) rotate([0, 90, 0]) // mitre_bracket(); import("../fixings/mitre_bracket.stl"); - translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_EXTERNAL[1] / 2, R_EXTERNAL[2] - D_BEAM_SKELETON / 2 + L_LEG]) + translate([R_SKELETON_BEAM_CENTRES[0] / 2, R_EXTERNAL[1] / 2, R_EXTERNAL[2] - D_BEAM_SKELETON / 2 + L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER]) rotate([-90, 90, 0]) // mitre_bracket(); import("../fixings/mitre_bracket.stl"); @@ -114,6 +119,7 @@ module glovebox_shell(angle_door_from_closed) { } } } + /* // Support beam legs L_support_leg = L_LEG - D_BEAM_SKELETON; for (index_beam_on_x = [0 : 1 : COUNT_BASE_SUPPORT_BEAMS_ON_Y - 1]) { @@ -137,16 +143,21 @@ module glovebox_shell(angle_door_from_closed) { color("silver") import("../fixings/angle_bracket_20_20.stl"); } } + */ + // Base gasket + color("black") translate([0, 0, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER / 2]) import("../glovebox_base/base_gasket.stl"); + // Base plate + translate([0, 0, L_LEG + R_BASE_PLATE[2] / 2]) base_plate(); // Rear panel - translate([0, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + R_EXTERNAL[2] / 2]) glovebox_rear_panel(); + translate([0, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + R_EXTERNAL[2] / 2]) glovebox_rear_panel(); // Door - translate([0, -R_EXTERNAL[1] / 2 - T_DOOR, L_LEG + R_EXTERNAL[2] - T_DOOR]) rotate([90 - angle_door_from_closed, 0, 0]) glovebox_door(); + translate([0, -R_EXTERNAL[1] / 2 - T_DOOR, L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + R_EXTERNAL[2] - T_DOOR]) rotate([90 - angle_door_from_closed, 0, 0]) glovebox_door(); // Hinges for (index_hinge = [0 : 1 : COUNT_HINGES - 1]) { translate([ -R_INTERNAL[0] / 2 + (R_INTERNAL[0]) / (COUNT_HINGES + 1) * (index_hinge + 1) , -R_EXTERNAL[1] / 2 - , L_LEG + R_EXTERNAL[2] + , L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + R_EXTERNAL[2] ]) { translate([0, D_BEAM_SKELETON / 2 - OFFSET_HINGE_HOLE_CENTRES_Y / 2, 0]) door_hinge(90 + angle_door_from_closed); @@ -175,12 +186,13 @@ module glovebox_shell(angle_door_from_closed) { } // Latches for (index_latch = [0 : 1 : 1]) { + /* // Bottom - mirror([index_latch, 0, 0]) + mirror([index_latch, 0, 0]) { translate([ R_EXTERNAL[0] / 2 - OFFSET_LATCH_FROM_SIDE , -R_EXTERNAL[1] / 2 - , L_LEG + , L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER ]) { // Plate translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2, -R_DOOR_LATCH_SUPPORT_PLATE[2] / 2]) difference() { @@ -226,12 +238,22 @@ module glovebox_shell(angle_door_from_closed) { } } } + } + */ // Sides - mirror([index_latch, 0, 0]) + mirror([index_latch, 0, 0]) { + translate([ + R_EXTERNAL[0] / 2 + , -R_EXTERNAL[1] / 2 + , L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + D_BEAM_SKELETON / 2 + ]) cube(1); + } + /* + mirror([index_latch, 0, 0]) { translate([ R_EXTERNAL[0] / 2 + R_DOOR_LATCH_SUPPORT_PLATE[2] / 2 , -R_EXTERNAL[1] / 2 + R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - , L_LEG + R_EXTERNAL[2] - OFFSET_LATCH_FROM_TOP + , L_LEG + R_BASE_PLATE[2] + T_GASKET_RUBBER + R_EXTERNAL[2] - OFFSET_LATCH_FROM_TOP ]) { rotate([0, 90, 0]) difference() { cube(R_DOOR_LATCH_SUPPORT_PLATE, center = true); @@ -283,6 +305,8 @@ module glovebox_shell(angle_door_from_closed) { } } } + } + */ } } // Shopping