Skip to content

Commit 31f9106

Browse files
committed
Update platform angle iron and deck mounting positions
Refactored side and transverse angle iron geometry to allow for variable lengths and improved alignment. Updated bolt hole patterns in platform_angle_iron, platform_deck, and platform_pivot_bracket modules to match new design, including shifting platform and deck positions forward and adjusting hole locations for better fit and assembly.
1 parent 3e94df8 commit 31f9106

File tree

3 files changed

+121
-41
lines changed

3 files changed

+121
-41
lines changed

LifeTrac-v25/mechanical_design/openscad/lifetrac_v25.scad

Lines changed: 92 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2461,24 +2461,20 @@ module platform_transverse_angle(length) {
24612461

24622462
// Deck Holes (Vertical, through Horizontal Leg)
24632463
// Along Z axis
2464+
// 3 bolts connecting to the platform itself
24642465
for (x_pos = [-length/2 + 100, 0, length/2 - 100]) {
24652466
translate([x_pos, leg/2, 0])
24662467
cylinder(d=angle_bolt_hole_dia, h=thick*3, center=true, $fn=24);
24672468
}
24682469

2469-
// L-bracket Holes (Horizontal, through Vertical Leg)
2470-
// Along Y axis
2471-
for (x_pos = [-length/2 + 25, length/2 - 25]) {
2472-
translate([x_pos, thick/2, -leg/2])
2473-
rotate([90, 0, 0])
2474-
cylinder(d=angle_bolt_hole_dia, h=thick*3, center=true, $fn=24);
2475-
}
2470+
// No holes on the other side (Vertical Leg)
24762471
}
24772472
}
24782473

2479-
module platform_angle_iron() {
2474+
module platform_angle_iron(length=0) {
24802475
angle_bolt_hole_dia = PLATFORM_BOLT_DIA + PLATFORM_BOLT_CLEARANCE;
2481-
height = PLATFORM_ARM_LENGTH - PLATFORM_BRACKET_WIDTH/2;
2476+
// Use provided length or default
2477+
height = (length > 0) ? length : (PLATFORM_ARM_LENGTH - PLATFORM_BRACKET_WIDTH/2);
24822478

24832479
difference() {
24842480
// Extrusion
@@ -2494,29 +2490,21 @@ module platform_angle_iron() {
24942490

24952491
// Pivot Holes (Start) - Horizontal Holes through Vertical Leg (Leg 1)
24962492
// Leg 1 is along X. Normal Y. Holes along Y.
2497-
for (z_pos = [60, 110]) {
2493+
// 2 holes for bolts into the L shaped pivot plate
2494+
for (z_pos = [30, 80]) {
24982495
translate([PLATFORM_ANGLE_THICK/2, PLATFORM_ANGLE_LEG/2, z_pos])
24992496
rotate([0, 90, 0]) // Align with X axis
25002497
cylinder(d=angle_bolt_hole_dia, h=PLATFORM_ANGLE_THICK + 10, center=true, $fn=24);
25012498
}
25022499

2503-
// Deck Holes (End) - Vertical Holes through Horizontal Leg (Leg 2)
2500+
// Deck Holes (Middle) - Vertical Holes through Horizontal Leg (Leg 2)
25042501
// Leg 2 is along Y. Normal X. Holes along X.
2505-
// Shifted positions to Z=22.7 and Z=397.3 to align with transverse angles (1/2" from edges)
2506-
for (z_pos = [22.7, 397.3]) {
2502+
// 2 bolts upward connecting to the platform itself
2503+
for (z_pos = [height/3, 2*height/3]) {
25072504
translate([PLATFORM_ANGLE_LEG/2, PLATFORM_ANGLE_THICK/2, z_pos])
25082505
rotate([90, 0, 0]) // Align with Y axis
25092506
cylinder(d=angle_bolt_hole_dia, h=PLATFORM_ANGLE_THICK + 10, center=true, $fn=24);
25102507
}
2511-
2512-
// L-bracket Holes (Ends) - Horizontal Holes through Vertical Leg (Leg 1)
2513-
// Leg 1 along X. Normal Y. Holes along Y.
2514-
// At Start (Pivot End) and End (Deck End) to connect to transverse angles
2515-
for (z_pos = [30, height - 30]) {
2516-
translate([PLATFORM_ANGLE_THICK/2, PLATFORM_ANGLE_LEG/2, z_pos])
2517-
rotate([0, 90, 0]) // Align with X axis
2518-
cylinder(d=angle_bolt_hole_dia, h=PLATFORM_ANGLE_THICK + 10, center=true, $fn=24);
2519-
}
25202508
}
25212509
}
25222510

@@ -2540,6 +2528,80 @@ module folding_platform_assembly(fold_angle=90) {
25402528
angle_iron_clearance = PLATFORM_THICKNESS / 2;
25412529
angle_iron_x_from_center = inner_wall_inner_face_x - PLATFORM_THICKNESS/2 - angle_iron_clearance;
25422530

2531+
// Shift platform forward by 0.5 inches (12.7mm)
2532+
shift_y = 12.7;
2533+
2534+
// Additional deck shift forward (towards front of machine)
2535+
// User requested ~2 inches more
2536+
deck_shift_y = 50.8;
2537+
2538+
// Transverse angles now run full width (approx)
2539+
// Side angles fit between them with gap
2540+
transverse_len = 2 * angle_iron_x_from_center;
2541+
2542+
// Calculate positions of transverse angles (Inner faces)
2543+
// Front Angle Inner Face (relative to pivot frame origin)
2544+
// Original Front Angle Pos: 37.3 - LEG. Inner Face at 37.3 - LEG + LEG = 37.3? No.
2545+
// Original Front Angle: Placed at 37.3 - LEG. Occupies [37.3-LEG, 37.3]. Inner Face at 37.3-LEG?
2546+
// Wait, Front Angle (Pivot End) is at +Y. Rear Angle is at -Y.
2547+
// Front Angle (Pivot End) placed at 37.3 - LEG. Occupies [-13.5, 37.3].
2548+
// Vertical leg is at -13.5 (Inner side).
2549+
// Rear Angle placed at -337.3 + LEG. Occupies [-337.3, -286.5].
2550+
// Vertical leg is at -286.5 (Inner side).
2551+
2552+
// Apply Shift Forward (+50.8mm)
2553+
front_angle_pos_y = 37.3 - PLATFORM_ANGLE_LEG + shift_y;
2554+
rear_angle_pos_y = -337.3 + PLATFORM_ANGLE_LEG + shift_y;
2555+
2556+
// Inner boundaries for side angles
2557+
// Front Angle Inner Boundary: front_angle_pos_y (Vertical leg face)
2558+
// Rear Angle Inner Boundary: rear_angle_pos_y (Vertical leg face)
2559+
// Gap
2560+
gap = 3.175; // 1/8 inch
2561+
2562+
side_angle_start_y = front_angle_pos_y - gap;
2563+
side_angle_end_y = rear_angle_pos_y + gap;
2564+
side_angle_len = side_angle_start_y - side_angle_end_y;
2565+
side_angle_center_y = (side_angle_start_y + side_angle_end_y) / 2;
2566+
2567+
// Side angle Z offset (in local frame before fold rotation)
2568+
// Local Z maps to World -Y (when fold=90)
2569+
// So World Y = -Local Z.
2570+
// Local Z = -World Y.
2571+
// But we have a base offset of `pivot_z - 60` in Z? No.
2572+
// The `translate([..., pivot_z - 60])` sets the origin.
2573+
// Then `rotate([fold_angle, 0, 0])` happens.
2574+
// Then `rotate([0, 0, -90])` happens.
2575+
// Side angle is extruded in Z (local).
2576+
// So we need to translate in Z (local) to position along Y (world).
2577+
// Wait, `platform_angle_iron` is extruded from 0 to height.
2578+
// If we want it centered at `side_angle_center_y` (World Y relative to pivot frame origin),
2579+
// We need to map World Y to Local Z.
2580+
// World Y = -Local Z (approx).
2581+
// Start of extrusion (Local Z=0) maps to World Y=0 (relative to pivot frame origin).
2582+
// Pivot frame origin is at `pivot_z - 60`? No.
2583+
// `translate([..., pivot_y, pivot_z - 60])`.
2584+
// Relative to this point:
2585+
// World Y (relative to pivot_y) = -Local Z.
2586+
// We want World Y (relative to pivot_y) to be `side_angle_start_y` (max Y) to `side_angle_end_y` (min Y).
2587+
// Wait, extrusion goes from 0 to height (positive Z).
2588+
// Positive Z maps to Negative Y (World).
2589+
// So Z=0 maps to Y=0. Z=height maps to Y=-height.
2590+
// We want the range [side_angle_end_y, side_angle_start_y].
2591+
// This corresponds to Z range [-side_angle_start_y, -side_angle_end_y].
2592+
// Since extrusion starts at 0, we need to translate by Z = -side_angle_start_y.
2593+
// Let's verify:
2594+
// Translate Z = -side_angle_start_y.
2595+
// Extrusion from -side_angle_start_y to -side_angle_start_y + length.
2596+
// Length = start - end.
2597+
// End Z = -side_angle_start_y + (start - end) = -end.
2598+
// Map to World Y: Y = -Z.
2599+
// Start Y = -(-side_angle_start_y) = side_angle_start_y.
2600+
// End Y = -(-end) = end.
2601+
// Correct.
2602+
2603+
side_angle_z_trans = -side_angle_start_y;
2604+
25432605
// =================================================================
25442606
// ANGLE IRON ARMS (2x - Left and Right)
25452607
// =================================================================
@@ -2548,42 +2610,36 @@ module folding_platform_assembly(fold_angle=90) {
25482610
color("DimGray")
25492611
translate([-angle_iron_x_from_center, pivot_y, pivot_z - 60])
25502612
rotate([fold_angle, 0, 0])
2613+
translate([0, 0, side_angle_z_trans])
25512614
rotate([0, 0, -90])
2552-
platform_angle_iron();
2615+
platform_angle_iron(length=side_angle_len);
25532616

25542617
// RIGHT SIDE angle iron
25552618
color("DimGray")
25562619
translate([angle_iron_x_from_center, pivot_y, pivot_z - 60])
25572620
rotate([fold_angle, 0, 0])
2621+
translate([0, 0, side_angle_z_trans])
25582622
mirror([1, 0, 0])
25592623
rotate([0, 0, -90])
2560-
platform_angle_iron();
2624+
platform_angle_iron(length=side_angle_len);
25612625

25622626
// =================================================================
25632627
// TRANSVERSE ANGLE IRONS (2x - Front and Rear)
25642628
// =================================================================
25652629

2566-
// Fit between the horizontal legs of the side angle irons
2567-
transverse_len = 2 * angle_iron_x_from_center - 2 * PLATFORM_ANGLE_LEG;
2568-
side_angle_len = PLATFORM_ARM_LENGTH - PLATFORM_BRACKET_WIDTH/2;
2569-
25702630
// Front Transverse Angle (Pivot End)
2571-
// Positioned 1/2" (12.7mm) from front edge of deck
2572-
// Deck front edge is at pivot_y + 50. Angle at pivot_y + 37.3.
25732631
color("DimGray")
25742632
translate([0, pivot_y, pivot_z - 60])
25752633
rotate([fold_angle - 90, 0, 0])
2576-
translate([0, 37.3, 0])
2577-
rotate([0, 0, 180])
2634+
translate([0, front_angle_pos_y, 0])
25782635
platform_transverse_angle(transverse_len);
25792636

25802637
// Rear Transverse Angle (Deck End)
2581-
// Positioned 1/2" (12.7mm) from rear edge of deck
2582-
// Deck rear edge is at pivot_y - 350. Angle at pivot_y - 337.3.
25832638
color("DimGray")
25842639
translate([0, pivot_y, pivot_z - 60])
25852640
rotate([fold_angle - 90, 0, 0])
2586-
translate([0, -337.3, 0])
2641+
translate([0, rear_angle_pos_y, 0])
2642+
rotate([0, 0, 180])
25872643
platform_transverse_angle(transverse_len);
25882644

25892645
// =================================================================
@@ -2609,7 +2665,7 @@ module folding_platform_assembly(fold_angle=90) {
26092665
color("DarkSlateGray")
26102666
translate([0, pivot_y, pivot_z - 60])
26112667
rotate([fold_angle, 0, 0])
2612-
translate([0, PLATFORM_THICKNESS/2, PLATFORM_DEPTH/2 - 12.7])
2668+
translate([0, PLATFORM_THICKNESS/2, PLATFORM_DEPTH/2 + 12.7 - shift_y - deck_shift_y])
26132669
rotate([90, 0, 0])
26142670
platform_deck();
26152671

LifeTrac-v25/mechanical_design/openscad/parts/platform_deck.scad

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,19 +60,30 @@ module platform_deck() {
6060
}
6161

6262
// Left angle iron mounting holes (Side Angle)
63-
// Y positions: -125, 125 (relative to center) - Adjusted for new arm length
64-
for (y_pos = [-125, 125]) {
63+
// 2 bolts upward connecting to the platform itself
64+
// Positions need to match side angle iron holes (height/3, 2*height/3)
65+
// Side angle length is variable now, but roughly PLATFORM_ARM_LENGTH - BRACKET/2 - GAP?
66+
// Actually, side angle length is calculated in main file.
67+
// We need to approximate or pass it in.
68+
// For now, let's assume standard positions relative to center.
69+
// Side angle is centered between front/rear transverse angles.
70+
// Front/Rear are at +/- (PLATFORM_DEPTH/2 - 12.7).
71+
// Side angle length ~ PLATFORM_DEPTH - 25.4 - 2*GAP.
72+
// Holes at 1/3 and 2/3 of that length.
73+
// Let's put them at +/- 75mm from center Y.
74+
for (y_pos = [-75, 75]) {
6575
translate([arm_x_left, y_pos, 0])
6676
cylinder(d=bolt_hole_dia, h=thickness + 4, center=true, $fn=32);
6777
}
6878

6979
// Right angle iron mounting holes (Side Angle)
70-
for (y_pos = [-125, 125]) {
80+
for (y_pos = [-75, 75]) {
7181
translate([arm_x_right, y_pos, 0])
7282
cylinder(d=bolt_hole_dia, h=thickness + 4, center=true, $fn=32);
7383
}
7484

7585
// Transverse Angle Holes (Front and Rear)
86+
// 3 bolts connecting to the platform itself
7687
// Y positions: -187.3 (Front), 187.3 (Rear) - 1/2 inch from edges
7788
// X positions: 0, -100, 100
7889
for (y_pos = [-187.3, 187.3]) {

LifeTrac-v25/mechanical_design/openscad/parts/platform_pivot_bracket.scad

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,21 @@ module platform_pivot_bracket() {
4343
corner_y = -pivot_to_corner_dist;
4444

4545
// Bolt positions (relative to corner along X)
46-
bolt_1_x = corner_to_bolt_dist;
47-
bolt_2_x = corner_to_bolt_dist + bolt_spacing;
46+
// Updated to match new side angle iron hole pattern (30mm and 80mm from start)
47+
// Pivot bracket starts at pivot. Angle iron starts at pivot bracket corner?
48+
// Angle iron pivot holes are at z=30 and z=80.
49+
// Pivot bracket corner is at corner_y = -60.
50+
// So angle iron starts at corner_y.
51+
// Bolt 1: 30mm from corner.
52+
// Bolt 2: 80mm from corner.
53+
bolt_1_x = corner_to_bolt_dist - 30; // Wait, corner_to_bolt_dist was 60.
54+
// Let's redefine based on angle iron holes.
55+
// Angle iron holes are at z=30, 80 from its start.
56+
// Its start aligns with the corner of the bracket?
57+
// Yes, bracket extends from pivot to corner, then along arm.
58+
// So bolts should be at 30 and 80 from corner.
59+
bolt_1_x = 30;
60+
bolt_2_x = 80;
4861

4962
// Hole diameters
5063
pivot_hole_dia = PLATFORM_PIVOT_PIN_DIA + PLATFORM_BOLT_CLEARANCE;

0 commit comments

Comments
 (0)