Completed design for v2.
This commit is contained in:
300
models/glovebox_shell/glovebox_shell.scad
Normal file
300
models/glovebox_shell/glovebox_shell.scad
Normal file
@@ -0,0 +1,300 @@
|
||||
include <../../config.scad>;
|
||||
use <../common/metric_bolt.scad>;
|
||||
use <../common/metric_countersunk_head_bolt.scad>;
|
||||
use <../common/washer.scad>;
|
||||
use <../fixings/angle_bracket_20_20.scad>;
|
||||
use <../fixings/door_hinge.scad>;
|
||||
use <../fixings/mitre_bracket.scad>;
|
||||
use <../glovebox_door/glovebox_door.scad>;
|
||||
use <../glovebox_rear_panel/glovebox_rear_panel.scad>;
|
||||
use <./skeleton_beam.scad>;
|
||||
|
||||
function get_length_beam_from_total_length_and_count_segments(length_total, count_segments) = (length_total - (count_segments + 1) * D_BEAM_SKELETON) / (count_segments);
|
||||
|
||||
module glovebox_shell(angle_door_from_closed) {
|
||||
// Shopping
|
||||
echo("Skeleton");
|
||||
// Model
|
||||
union() {
|
||||
length_beam_on_x = R_INTERNAL[0];
|
||||
length_beam_on_y = R_EXTERNAL[1];
|
||||
length_beam_on_z = R_INTERNAL[2];
|
||||
|
||||
// X
|
||||
for (index_beam_on_y = [0 : 1 : 1]) {
|
||||
for (index_beam_on_z = [0 : 1 : 1]) {
|
||||
// Beams
|
||||
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])
|
||||
])
|
||||
rotate([0, 90, 0])
|
||||
// skeleton_beam(length_beam_on_x);
|
||||
color("silver") import("./skeleton_beam_for_shell_on_x.stl");
|
||||
// Joints
|
||||
}
|
||||
}
|
||||
// translate([0, 0, L_LEG + D_BEAM_SKELETON / 2]) rotate([0, 90, 0]) skeleton_beam(length_beam_on_x);
|
||||
// Y
|
||||
for (index_beam_on_x = [0 : 1 : 1]) {
|
||||
for (index_beam_on_z = [0 : 1 : 1]) {
|
||||
// Beams
|
||||
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])
|
||||
])
|
||||
rotate([90, 0, 0])
|
||||
// skeleton_beam(length_beam_on_y);
|
||||
color("silver") import("./skeleton_beam_for_shell_on_y.stl");
|
||||
// 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
|
||||
])
|
||||
rotate([90, 0, 0])
|
||||
// skeleton_beam(R_EXTERNAL[1]);
|
||||
color("silver") import("./skeleton_beam_for_shell_base_support.stl");
|
||||
// Joints
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
// translate([0, 0, L_LEG - 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])
|
||||
// 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])
|
||||
// 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])
|
||||
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])
|
||||
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])
|
||||
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])
|
||||
rotate([-90, 90, 0])
|
||||
// mitre_bracket();
|
||||
import("../fixings/mitre_bracket.stl");
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
// 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]) {
|
||||
for (index_beam_on_y = [0 : 1 : COUNT_FEET_PER_BASE_SUPPORT_BEAM_ON_Y - 1]) {
|
||||
// Beam
|
||||
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)
|
||||
, -R_SKELETON_BEAM_CENTRES[1] / 2 + (R_SKELETON_BEAM_CENTRES[1]) / (COUNT_FEET_PER_BASE_SUPPORT_BEAM_ON_Y + 1) * (1 + index_beam_on_y)
|
||||
, L_support_leg / 2
|
||||
])
|
||||
// skeleton_beam(L_support_leg);
|
||||
color("silver") import("./skeleton_beam_for_shell_base_support_leg.stl");
|
||||
// Support
|
||||
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)
|
||||
, -R_SKELETON_BEAM_CENTRES[1] / 2 + (R_SKELETON_BEAM_CENTRES[1]) / (COUNT_FEET_PER_BASE_SUPPORT_BEAM_ON_Y + 1) * (1 + index_beam_on_y) + D_BEAM_SKELETON / 2
|
||||
, L_support_leg
|
||||
])
|
||||
rotate([0, 90, 90])
|
||||
// angle_bracket_20_20();
|
||||
color("silver") import("../fixings/angle_bracket_20_20.stl");
|
||||
}
|
||||
}
|
||||
// Rear panel
|
||||
translate([0, R_SKELETON_BEAM_CENTRES[1] / 2, L_LEG + 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();
|
||||
// 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]
|
||||
]) {
|
||||
translate([0, D_BEAM_SKELETON / 2 - OFFSET_HINGE_HOLE_CENTRES_Y / 2, 0]) door_hinge(90 + angle_door_from_closed);
|
||||
|
||||
for (index_bolt = [0 : 1 : 1]) {
|
||||
// On Door
|
||||
mirror([index_bolt, 0, 0]) translate([OFFSET_HINGE_HOLE_CENTRES_X / 2, 0, -OFFSET_HINGE_HOLE_CENTRES_Y / 2])
|
||||
translate([0, -LENGTH_BOLT_HINGE_ON_DOOR / 2, 0]) rotate([-90, 0, 0]) {
|
||||
// Bolt and nut
|
||||
metric_countersunk_head_bolt(SIZE_BOLT_HINGE, LENGTH_BOLT_HINGE_ON_DOOR, true, OFFSET_NUT_FROM_BOLT_END);
|
||||
// Washer
|
||||
translate([0, 0, LENGTH_BOLT_HINGE_ON_DOOR / 2 - (T_GASKET_RUBBER + T_HDPE_SHEET + T_DOOR_SUPPORT_BEAM + R_HINGE[2] + T_WASHER_HINGE / 2)]) washer(T_WASHER_HINGE, D_WASHER_HINGE, SIZE_BOLT_HINGE, centre = true);
|
||||
}
|
||||
// On Chamber
|
||||
mirror([index_bolt, 0, 0]) translate([OFFSET_HINGE_HOLE_CENTRES_X / 2, D_BEAM_SKELETON / 2, R_HINGE[2]])
|
||||
// translate([0, -LENGTH_BOLT_HINGE_ON_CHAMBER / 2, 0])
|
||||
{
|
||||
// T nut
|
||||
translate([0, 0, -R_HINGE[2] - T_BEAM_SKELETON]) mirror([0, 0, 1]) import("../common/br_t_nut.stl");
|
||||
// Washer
|
||||
translate([0, 0, T_WASHER_HINGE / 2]) washer(T_WASHER_HINGE, D_WASHER_HINGE, SIZE_BOLT_HINGE, centre = true);
|
||||
// Bolt
|
||||
translate([0, 0, -LENGTH_BOLT_HINGE_ON_CHAMBER / 2 + T_WASHER_HINGE]) metric_bolt(SIZE_BOLT_HINGE, LENGTH_BOLT_HINGE_ON_CHAMBER, false, OFFSET_NUT_FROM_BOLT_END);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Latches
|
||||
for (index_latch = [0 : 1 : 1]) {
|
||||
// Bottom
|
||||
mirror([index_latch, 0, 0])
|
||||
translate([
|
||||
R_EXTERNAL[0] / 2 - OFFSET_LATCH_FROM_SIDE
|
||||
, -R_EXTERNAL[1] / 2
|
||||
, L_LEG
|
||||
]) {
|
||||
// Plate
|
||||
translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2, -R_DOOR_LATCH_SUPPORT_PLATE[2] / 2]) difference() {
|
||||
cube(R_DOOR_LATCH_SUPPORT_PLATE, center = true);
|
||||
translate([0, -R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 + D_BEAM_SKELETON / 2, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_PLATE_TO_SKELETON / 2, SIZE_BOLT_LATCH_PLATE_TO_SKELETON / 2, center = true);
|
||||
translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2 * 1, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_TO_PLATE / 2, SIZE_BOLT_LATCH_TO_PLATE / 2, center = true);
|
||||
translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2 * 2, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_TO_PLATE / 2, SIZE_BOLT_LATCH_TO_PLATE / 2, center = true);
|
||||
translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2 * 3, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_TO_PLATE / 2, SIZE_BOLT_LATCH_TO_PLATE / 2, center = true);
|
||||
}
|
||||
// Chamber nut
|
||||
translate([0, D_BEAM_SKELETON / 2, T_BEAM_SKELETON]) import("../common/br_t_nut.stl");
|
||||
// Chamber washer
|
||||
translate([
|
||||
0
|
||||
, D_BEAM_SKELETON / 2
|
||||
, -R_DOOR_LATCH_SUPPORT_PLATE[2] - T_WASHER_LATCH_PLATE_TO_SKELETON / 2
|
||||
])
|
||||
washer(T_WASHER_LATCH_PLATE_TO_SKELETON, D_WASHER_LATCH_PLATE_TO_SKELETON, SIZE_BOLT_LATCH_PLATE_TO_SKELETON, centre = true);
|
||||
// Chamber bolt
|
||||
translate([
|
||||
0
|
||||
, D_BEAM_SKELETON / 2
|
||||
, -R_DOOR_LATCH_SUPPORT_PLATE[2] + LENGTH_BOLT_LATCH_PLATE_TO_SKELETON / 2 - T_WASHER_LATCH_PLATE_TO_SKELETON
|
||||
])
|
||||
mirror([0, 0, 1]) metric_bolt(SIZE_BOLT_LATCH_PLATE_TO_SKELETON, LENGTH_BOLT_LATCH_PLATE_TO_SKELETON, false, OFFSET_NUT_FROM_BOLT_END_CHAMBER);
|
||||
// Latch fastener
|
||||
for (index_bolt = [0 : 1 : 2]) {
|
||||
translate([0, -D_BEAM_SKELETON / 2 * index_bolt, 0]) {
|
||||
// Washer
|
||||
translate([
|
||||
0
|
||||
, R_DOOR_LATCH_SUPPORT_PLATE[1] - D_BEAM_SKELETON / 2
|
||||
, T_WASHER_LATCH_TO_PLATE / 2
|
||||
])
|
||||
washer(T_WASHER_LATCH_TO_PLATE, D_WASHER_LATCH_TO_PLATE, SIZE_BOLT_LATCH_TO_PLATE, centre = true);
|
||||
// Bolt
|
||||
translate([
|
||||
0
|
||||
, R_DOOR_LATCH_SUPPORT_PLATE[1] - D_BEAM_SKELETON / 2
|
||||
, -R_DOOR_LATCH_SUPPORT_PLATE[2] + LENGTH_BOLT_LATCH_TO_PLATE / 2 - R_LATCH[2]
|
||||
])
|
||||
mirror([0, 0, 1]) metric_countersunk_head_bolt(SIZE_BOLT_LATCH_TO_PLATE, LENGTH_BOLT_LATCH_TO_PLATE, true, OFFSET_NUT_FROM_BOLT_END_CHAMBER);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Sides
|
||||
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
|
||||
]) {
|
||||
rotate([0, 90, 0]) difference() {
|
||||
cube(R_DOOR_LATCH_SUPPORT_PLATE, center = true);
|
||||
translate([0, -R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 + D_BEAM_SKELETON / 2, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_PLATE_TO_SKELETON / 2, SIZE_BOLT_LATCH_PLATE_TO_SKELETON / 2, center = true);
|
||||
translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2 * 1, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_TO_PLATE / 2, SIZE_BOLT_LATCH_TO_PLATE / 2, center = true);
|
||||
translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2 * 2, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_TO_PLATE / 2, SIZE_BOLT_LATCH_TO_PLATE / 2, center = true);
|
||||
translate([0, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2 * 3, 0]) cylinder(R_DOOR_LATCH_SUPPORT_PLATE[2], SIZE_BOLT_LATCH_TO_PLATE / 2, SIZE_BOLT_LATCH_TO_PLATE / 2, center = true);
|
||||
}
|
||||
// Chamber nut
|
||||
// translate([0, D_BEAM_SKELETON / 2, T_BEAM_SKELETON])
|
||||
translate([
|
||||
-R_DOOR_LATCH_SUPPORT_PLATE[2] / 2 - T_BEAM_SKELETON
|
||||
, -R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 + D_BEAM_SKELETON / 2
|
||||
, 0
|
||||
])
|
||||
rotate([0, -90, 0]) import("../common/br_t_nut.stl");
|
||||
// Chamber washer
|
||||
// translate([0, D_BEAM_SKELETON / 2, -R_DOOR_LATCH_SUPPORT_PLATE[2] - T_WASHER_LATCH_PLATE_TO_SKELETON / 2])
|
||||
translate([
|
||||
R_DOOR_LATCH_SUPPORT_PLATE[2] / 2 + T_WASHER_LATCH_PLATE_TO_SKELETON / 2
|
||||
, -R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 + D_BEAM_SKELETON / 2
|
||||
, 0
|
||||
])
|
||||
rotate([0, 90, 0]) washer(T_WASHER_LATCH_PLATE_TO_SKELETON, D_WASHER_LATCH_PLATE_TO_SKELETON, SIZE_BOLT_LATCH_PLATE_TO_SKELETON, centre = true);
|
||||
// Chamber bolt
|
||||
translate([
|
||||
-LENGTH_BOLT_LATCH_PLATE_TO_SKELETON / 2 + R_DOOR_LATCH_SUPPORT_PLATE[2] / 2 + T_WASHER_LATCH_PLATE_TO_SKELETON
|
||||
, -R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 + D_BEAM_SKELETON / 2
|
||||
, 0
|
||||
])
|
||||
rotate([0, 90, 0]) metric_bolt(SIZE_BOLT_LATCH_PLATE_TO_SKELETON, LENGTH_BOLT_LATCH_PLATE_TO_SKELETON, false, OFFSET_NUT_FROM_BOLT_END_CHAMBER);
|
||||
// Latch fastener
|
||||
for (index_bolt = [0 : 1 : 2]) {
|
||||
translate([0, -D_BEAM_SKELETON / 2 * index_bolt, 0]) {
|
||||
// Washer
|
||||
translate([
|
||||
-T_WASHER_LATCH_TO_PLATE / 2 - R_DOOR_LATCH_SUPPORT_PLATE[2 ] / 2
|
||||
, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2
|
||||
, 0
|
||||
])
|
||||
rotate([0, 90, 0]) washer(T_WASHER_LATCH_TO_PLATE, D_WASHER_LATCH_TO_PLATE, SIZE_BOLT_LATCH_TO_PLATE, centre = true);
|
||||
// Bolt
|
||||
translate([
|
||||
-LENGTH_BOLT_LATCH_TO_PLATE / 2 + R_DOOR_LATCH_SUPPORT_PLATE[2] / 2 + R_LATCH[2]
|
||||
, R_DOOR_LATCH_SUPPORT_PLATE[1] / 2 - D_BEAM_SKELETON / 2
|
||||
, 0
|
||||
])
|
||||
rotate([0, 90, 0]) metric_countersunk_head_bolt(SIZE_BOLT_LATCH_TO_PLATE, LENGTH_BOLT_LATCH_TO_PLATE, true, OFFSET_NUT_FROM_BOLT_END_CHAMBER);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Shopping
|
||||
echo(str("Skeleton beam Z: Aluminium box section D8 drilled 20mm x 20mm x ", L_LEG + R_EXTERNAL[2] - D_BEAM_SKELETON, "mm - x4"));
|
||||
echo(str("Skeleton beam Z fixing: Quick connector (6) - x4"));
|
||||
echo("Inner bracket 6mm - x16");
|
||||
// Rear panel vent duct fasteners
|
||||
// Hinge fasteners
|
||||
|
||||
echo(str("Door latch support plate fastener nut: M4 T Nut (6) - x4"));
|
||||
echo(str("Door latch support plate fastener bolt: Bolt M4 x ", 1 + 3.2 + R_DOOR_LATCH_SUPPORT_PLATE[2] + T_WASHER_LATCH_TO_PLATE, "mm - x4"));
|
||||
echo(str("Door latch support plate fastener washer: Washer M4 x ", D_WASHER_LATCH_TO_PLATE, "mm x ", T_WASHER_LATCH_TO_PLATE, "mm - x4"));
|
||||
}
|
||||
|
||||
glovebox_shell();
|
||||
Reference in New Issue
Block a user