@@ -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
0 commit comments