Completed design for v2.
This commit is contained in:
13
models/glovebox_door/door_gasket.scad
Normal file
13
models/glovebox_door/door_gasket.scad
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
include <../../config.scad>
|
||||
|
||||
module door_gasket() {
|
||||
color("black") difference() {
|
||||
cube([R_EXTERNAL[0], R_EXTERNAL[2], T_GASKET_RUBBER], center = true);
|
||||
cube([R_EXTERNAL[0] - 2 * W_DOOR_GASKET, R_EXTERNAL[2] - 2 * W_DOOR_GASKET, T_GASKET_RUBBER], center = true);
|
||||
}
|
||||
// Shopping
|
||||
}
|
||||
|
||||
// test output
|
||||
door_gasket();
|
||||
BIN
models/glovebox_door/door_gasket.stl
Normal file
BIN
models/glovebox_door/door_gasket.stl
Normal file
Binary file not shown.
12
models/glovebox_door/door_support_beam.scad
Normal file
12
models/glovebox_door/door_support_beam.scad
Normal file
@@ -0,0 +1,12 @@
|
||||
|
||||
include <../../config.scad>
|
||||
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);
|
||||
// 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"));
|
||||
}
|
||||
|
||||
door_support_beam(500);
|
||||
BIN
models/glovebox_door/door_support_beam_on_x.stl
Normal file
BIN
models/glovebox_door/door_support_beam_on_x.stl
Normal file
Binary file not shown.
BIN
models/glovebox_door/door_support_beam_on_y.stl
Normal file
BIN
models/glovebox_door/door_support_beam_on_y.stl
Normal file
Binary file not shown.
20
models/glovebox_door/glove_gasket.scad
Normal file
20
models/glovebox_door/glove_gasket.scad
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
include <../../config.scad>;
|
||||
use <./glove_gasket_holes.scad>;
|
||||
|
||||
module glove_gasket() {
|
||||
color("black") difference() {
|
||||
// Body
|
||||
cylinder(T_GASKET_RUBBER, D_GLOVE_HOLE / 2 + W_DOOR_GASKET, D_GLOVE_HOLE / 2 + W_DOOR_GASKET, center = true);
|
||||
// Arm hole
|
||||
cylinder(T_GASKET_RUBBER, D_GLOVE_HOLE / 2, D_GLOVE_HOLE / 2, center = true);
|
||||
// Fastener holes
|
||||
glove_gasket_holes();
|
||||
}
|
||||
// Shopping
|
||||
echo(str("EDPM rubber: Vent Gasket ", D_GLOVE_HOLE + W_DOOR_GASKET * 2, "mm x ", D_GLOVE_HOLE + W_DOOR_GASKET * 2, "mm - x1"));
|
||||
}
|
||||
|
||||
$fn = 250;
|
||||
// test output
|
||||
glove_gasket();
|
||||
BIN
models/glovebox_door/glove_gasket.stl
Normal file
BIN
models/glovebox_door/glove_gasket.stl
Normal file
Binary file not shown.
14
models/glovebox_door/glove_gasket_holes.scad
Normal file
14
models/glovebox_door/glove_gasket_holes.scad
Normal file
@@ -0,0 +1,14 @@
|
||||
|
||||
include <../../config.scad>;
|
||||
|
||||
module glove_gasket_holes() {
|
||||
for (index_hole = [0 : 1 : COUNT_BOLTS_PER_GLOVE - 1]) {
|
||||
rotate([0, 0, 360 / COUNT_BOLTS_PER_GLOVE * index_hole]) translate([0, D_GLOVE_HOLE / 2 + W_DOOR_GASKET / 2, 0])
|
||||
// rotate([90, 0, 0])
|
||||
cylinder(T_HDPE_SHEET + T_GASKET_RUBBER, SIZE_BOLT_GLOVE / 2, SIZE_BOLT_GLOVE / 2, center = true);
|
||||
}
|
||||
// Shopping
|
||||
}
|
||||
|
||||
// test output
|
||||
glove_gasket_holes();
|
||||
211
models/glovebox_door/glovebox_door.scad
Normal file
211
models/glovebox_door/glovebox_door.scad
Normal file
@@ -0,0 +1,211 @@
|
||||
|
||||
include <../../config.scad>;
|
||||
use <./door_support_beam.scad>;
|
||||
use <./glove_gasket_holes.scad>;
|
||||
use <../common/metric_bolt_functions.scad>;
|
||||
use <../common/metric_countersunk_head_bolt.scad>;
|
||||
use <../common/washer.scad>;
|
||||
|
||||
module glovebox_door() {
|
||||
union() {
|
||||
difference() {
|
||||
union() {
|
||||
/*
|
||||
difference() {
|
||||
// clear panel
|
||||
// color("white", 0.4)
|
||||
color("black")
|
||||
translate([0, -R_EXTERNAL[2] / 2, -T_HDPE_SHEET / 2]) cube([R_EXTERNAL[0], R_EXTERNAL[2], T_HDPE_SHEET], center = true);
|
||||
for (index_side = [0 : 1 : 1]) {
|
||||
mirror([index_side, 0, 0]) {
|
||||
translate([
|
||||
OFFSET_GLOVE_HOLE_CENTRES_X / 2
|
||||
, -R_EXTERNAL[2] * 3 / 4
|
||||
, -T_HDPE_SHEET / 2
|
||||
]){
|
||||
// Glove holes
|
||||
cylinder(T_HDPE_SHEET, D_GLOVE_HOLE / 2, D_GLOVE_HOLE / 2, center = true);
|
||||
// Gasket fastener holes
|
||||
glove_gasket_holes();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
color("white", 0.4) import("./glovebox_door_panel_only.stl");
|
||||
// gasket
|
||||
color("black") translate([
|
||||
0
|
||||
, -R_EXTERNAL[2] / 2
|
||||
, -(T_HDPE_SHEET + T_GASKET_RUBBER / 2)
|
||||
])
|
||||
import("./door_gasket.stl");
|
||||
// Glove gasket
|
||||
color("black") for (index_side = [0 : 1 : 1]) {
|
||||
mirror([index_side, 0, 0]) {
|
||||
translate([
|
||||
OFFSET_GLOVE_HOLE_CENTRES_X / 2
|
||||
, -R_EXTERNAL[2] * 3 / 4
|
||||
, -T_HDPE_SHEET - T_GASKET_RUBBER / 2
|
||||
])
|
||||
import("./glove_gasket.stl");
|
||||
}
|
||||
}
|
||||
/*
|
||||
// Glove holding peg - CAN JUST INVERT THE GLOVES
|
||||
translate([0, -100, -100 / 2]) cylinder(100, 12, 12, center = true);
|
||||
*/
|
||||
// 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([
|
||||
-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");
|
||||
// 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");
|
||||
// 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");
|
||||
}
|
||||
}
|
||||
// Bolt holes
|
||||
// Top
|
||||
for (index_hole_on_x = [0 : 1 : COUNT_BOLTS_PER_DOOR_GASKET_ON_X_TOP - 1]) {
|
||||
translate([
|
||||
R_EXTERNAL[0] / 2 - OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[0] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_X_TOP - 1) * index_hole_on_x
|
||||
, -(D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2
|
||||
, 0
|
||||
])
|
||||
cylinder(W_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM * 2, SIZE_BOLT_DOOR_GASKET / 2, SIZE_BOLT_DOOR_GASKET / 2, center = true);
|
||||
}
|
||||
// Bottom
|
||||
for (index_hole_on_x = [0 : 1 : COUNT_BOLTS_PER_DOOR_GASKET_ON_X_BOTTOM - 1]) {
|
||||
translate([
|
||||
-(R_EXTERNAL[0] / 2 - OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[0] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_X_BOTTOM - 1) * index_hole_on_x)
|
||||
, -R_EXTERNAL[1] + (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2
|
||||
, 0
|
||||
])
|
||||
cylinder(W_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM * 2, SIZE_BOLT_DOOR_GASKET / 2, SIZE_BOLT_DOOR_GASKET / 2, center = true);
|
||||
}
|
||||
for (index_hole_on_z = [0 : 1 : COUNT_BOLTS_PER_DOOR_GASKET_ON_Z - 1]) {
|
||||
// Right
|
||||
translate([
|
||||
R_EXTERNAL[0] / 2 - (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2
|
||||
, -D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[1] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_Z - 1) * index_hole_on_z
|
||||
, 0
|
||||
])
|
||||
cylinder(W_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM * 2, SIZE_BOLT_DOOR_GASKET / 2, SIZE_BOLT_DOOR_GASKET / 2, center = true);
|
||||
// Left
|
||||
translate([
|
||||
-(R_EXTERNAL[0] / 2 - (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2)
|
||||
, -OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[1] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_Z - 1) * index_hole_on_z
|
||||
, 0
|
||||
])
|
||||
cylinder(W_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM * 2, SIZE_BOLT_DOOR_GASKET / 2, SIZE_BOLT_DOOR_GASKET / 2, center = true);
|
||||
}
|
||||
}
|
||||
// Bolts
|
||||
// Door seal
|
||||
// Top
|
||||
for (index_hole_on_x = [0 : 1 : COUNT_BOLTS_PER_DOOR_GASKET_ON_X_TOP - 1]) {
|
||||
translate([
|
||||
D_DOOR_SUPPORT_BEAM -(R_EXTERNAL[0] / 2 - OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[0] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_X_TOP - 1) * index_hole_on_x)
|
||||
, -(D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2
|
||||
, 0
|
||||
]) {
|
||||
// Bolt and nut
|
||||
translate([0, 0, LENGTH_BOLT_DOOR_GASKET / 2 - T_HDPE_SHEET - T_GASKET_RUBBER]) mirror([0, 0, 1]) metric_countersunk_head_bolt(SIZE_BOLT_DOOR_GASKET, LENGTH_BOLT_DOOR_GASKET, true, OFFSET_NUT_FROM_BOLT_END);
|
||||
// Washer
|
||||
translate([0, 0, T_DOOR_SUPPORT_BEAM + T_WASHER_DOOR_GASKET / 2]) washer(T_WASHER_DOOR_GASKET, D_WASHER_DOOR_GASKET, SIZE_BOLT_DOOR_GASKET, centre = true);
|
||||
}
|
||||
}
|
||||
// Bottom
|
||||
for (index_hole_on_x = [0 : 1 : COUNT_BOLTS_PER_DOOR_GASKET_ON_X_BOTTOM - 1]) {
|
||||
translate([
|
||||
-(R_EXTERNAL[0] / 2 - OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[0] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_X_BOTTOM - 1) * index_hole_on_x)
|
||||
, -R_EXTERNAL[1] + (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2
|
||||
, 0
|
||||
]) {
|
||||
// Bolt and nut
|
||||
translate([0, 0, LENGTH_BOLT_DOOR_GASKET / 2 - T_HDPE_SHEET - T_GASKET_RUBBER]) mirror([0, 0, 1]) metric_countersunk_head_bolt(SIZE_BOLT_DOOR_GASKET, LENGTH_BOLT_DOOR_GASKET, true, OFFSET_NUT_FROM_BOLT_END);
|
||||
// Washer
|
||||
translate([0, 0, T_DOOR_SUPPORT_BEAM + T_WASHER_DOOR_GASKET / 2]) washer(T_WASHER_DOOR_GASKET, D_WASHER_DOOR_GASKET, SIZE_BOLT_DOOR_GASKET, centre = true);
|
||||
}
|
||||
}
|
||||
for (index_hole_on_z = [0 : 1 : COUNT_BOLTS_PER_DOOR_GASKET_ON_Z - 1]) {
|
||||
// Right
|
||||
translate([
|
||||
R_EXTERNAL[0] / 2 - (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2
|
||||
, -D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[1] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_Z - 1) * index_hole_on_z
|
||||
, 0
|
||||
]) {
|
||||
// Bolt and nut
|
||||
translate([0, 0, LENGTH_BOLT_DOOR_GASKET / 2 - T_HDPE_SHEET - T_GASKET_RUBBER]) mirror([0, 0, 1]) metric_countersunk_head_bolt(SIZE_BOLT_DOOR_GASKET, LENGTH_BOLT_DOOR_GASKET, true, OFFSET_NUT_FROM_BOLT_END);
|
||||
// Washer
|
||||
translate([0, 0, T_DOOR_SUPPORT_BEAM + T_WASHER_DOOR_GASKET / 2]) washer(T_WASHER_DOOR_GASKET, D_WASHER_DOOR_GASKET, SIZE_BOLT_DOOR_GASKET, centre = true);
|
||||
}
|
||||
// Left
|
||||
translate([
|
||||
-(R_EXTERNAL[0] / 2 - (D_DOOR_SUPPORT_BEAM - T_DOOR_SUPPORT_BEAM) / 2)
|
||||
, -OFFSET_BOLTS_FROM_SEAL_END - (R_EXTERNAL[1] - D_DOOR_SUPPORT_BEAM - OFFSET_BOLTS_FROM_SEAL_END * 2) / (COUNT_BOLTS_PER_DOOR_GASKET_ON_Z - 1) * index_hole_on_z
|
||||
, 0
|
||||
]) {
|
||||
// Bolt and nut
|
||||
translate([0, 0, LENGTH_BOLT_DOOR_GASKET / 2 - T_HDPE_SHEET - T_GASKET_RUBBER]) mirror([0, 0, 1]) metric_countersunk_head_bolt(SIZE_BOLT_DOOR_GASKET, LENGTH_BOLT_DOOR_GASKET, true, OFFSET_NUT_FROM_BOLT_END);
|
||||
// Washer
|
||||
translate([0, 0, T_DOOR_SUPPORT_BEAM + T_WASHER_DOOR_GASKET / 2]) washer(T_WASHER_DOOR_GASKET, D_WASHER_DOOR_GASKET, SIZE_BOLT_DOOR_GASKET, centre = true);
|
||||
}
|
||||
}
|
||||
// Glove seals
|
||||
height_nut_glove_seal = get_metric_bolt_head_height(SIZE_BOLT_GLOVE);
|
||||
length_bolt_glove_seal = T_GASKET_RUBBER * 2 + T_HDPE_SHEET + T_WASHER_GLOVE + height_nut_glove_seal + OFFSET_NUT_FROM_BOLT_END;
|
||||
for (index_side = [0 : 1 : 1]) {
|
||||
mirror([index_side, 0, 0]) {
|
||||
translate([
|
||||
OFFSET_GLOVE_HOLE_CENTRES_X / 2
|
||||
, -R_EXTERNAL[2] * 3 / 4
|
||||
, 0
|
||||
]) {
|
||||
for (index_hole = [0 : 1 : COUNT_BOLTS_PER_GLOVE - 1]) {
|
||||
rotate([0, 0, 360 / COUNT_BOLTS_PER_GLOVE * index_hole]) translate([0, D_GLOVE_HOLE / 2 + W_DOOR_GASKET / 2, 0]) {
|
||||
// Bolt and nut
|
||||
translate([0, 0, length_bolt_glove_seal / 2 - T_HDPE_SHEET - T_GASKET_RUBBER * 2]) mirror([0, 0, 1]) metric_countersunk_head_bolt(SIZE_BOLT_GLOVE, length_bolt_glove_seal, true, OFFSET_NUT_FROM_BOLT_END);
|
||||
// Washer
|
||||
translate([0, 0, T_WASHER_GLOVE / 2]) washer(T_WASHER_GLOVE, D_WASHER_GLOVE, SIZE_BOLT_GLOVE, centre = true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Shopping
|
||||
}
|
||||
|
||||
$fn = 100;
|
||||
// test output
|
||||
glovebox_door();
|
||||
// door_support_beam(R_EXTERNAL[0] - D_DOOR_SUPPORT_BEAM);
|
||||
// door_support_beam(R_EXTERNAL[2] - D_DOOR_SUPPORT_BEAM);
|
||||
BIN
models/glovebox_door/glovebox_door_panel_only.stl
Normal file
BIN
models/glovebox_door/glovebox_door_panel_only.stl
Normal file
Binary file not shown.
Reference in New Issue
Block a user