|
| 1 | +# LifeTrac v25 Frame Tubes and Stiffener Plate Updates |
| 2 | +**Date:** February 3, 2026 |
| 3 | + |
| 4 | +## Summary |
| 5 | +This session focused on fixing frame tube placement, adding bolt holes for angle iron connections, widening the front stiffener plate, and reshaping the inner wall plates. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## Changes Made |
| 10 | + |
| 11 | +### 1. Frame Tube Rotation Fix |
| 12 | +**Files Modified:** `lifetrac_v25.scad` |
| 13 | + |
| 14 | +**Problem:** Frame tubes (T1 and T2) were misoriented - the 6" and 2" dimensions were swapped. |
| 15 | + |
| 16 | +**Solution:** Added `rotate([90, 0, 0])` to both frame tube placements in `cross_frame_tubes()` module. Also adjusted Y translation to compensate for the rotation shifting the tube position. |
| 17 | + |
| 18 | +```scad |
| 19 | +// Before: |
| 20 | +translate([0, FRONT_FRAME_TUBE_Y, FRAME_TUBE_Z]) |
| 21 | +part_t1_front_frame_tube(); |
| 22 | +
|
| 23 | +// After: |
| 24 | +translate([0, FRONT_FRAME_TUBE_Y + FRAME_TUBE_WIDTH, FRAME_TUBE_Z]) |
| 25 | +rotate([90, 0, 0]) |
| 26 | +part_t1_front_frame_tube(); |
| 27 | +``` |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +### 2. Arm Crossbeam (T3) Length Adjustment |
| 32 | +**Files Modified:** |
| 33 | +- `tube_t3_arm_crossbeam.scad` |
| 34 | +- `lifetrac_v25.scad` |
| 35 | + |
| 36 | +**Initial Change:** Shortened crossbeam to be flush with outer faces of inner arm CNC plates: |
| 37 | +```scad |
| 38 | +PART_T3_LENGTH = ARM_SPACING - TUBE_2X6_1_4[0] - 2*ARM_PLATE_THICKNESS; // ~837mm |
| 39 | +``` |
| 40 | + |
| 41 | +**Final Change:** Extended crossbeam through the arm CNC plates (user requested it reach through): |
| 42 | +```scad |
| 43 | +PART_T3_LENGTH = ARM_SPACING - TUBE_2X6_1_4[0]; // ~849mm |
| 44 | +``` |
| 45 | + |
| 46 | +Also updated `CROSS_BEAM_SPAN` constant in main assembly to match. |
| 47 | + |
| 48 | +--- |
| 49 | + |
| 50 | +### 3. Frame Tube Bolt Holes (T1 and T2) |
| 51 | +**Files Modified:** |
| 52 | +- `tube_t1_front_frame.scad` |
| 53 | +- `tube_t2_rear_frame.scad` |
| 54 | +- `structural_parts.scad` |
| 55 | + |
| 56 | +**Added bolt holes for angle iron mounts at 6 X positions:** |
| 57 | +1. Left outer panel |
| 58 | +2. Left inner panel |
| 59 | +3. Left motor plate |
| 60 | +4. Right motor plate |
| 61 | +5. Right inner panel |
| 62 | +6. Right outer panel |
| 63 | + |
| 64 | +**Hole Configuration:** |
| 65 | +- 24 holes per tube (6 positions × 2 faces × 2 holes per face) |
| 66 | +- 1/2" diameter bolts |
| 67 | +- Holes drilled through top and bottom Z faces (which become front/rear Y faces after rotation) |
| 68 | +- Y positions at ~50.8mm and ~101.6mm (matching angle iron hole spacing) |
| 69 | + |
| 70 | +**Key Fix:** Initial holes were too close to tube edges. Corrected by: |
| 71 | +- Drilling through Z faces instead of Y faces |
| 72 | +- Positioning holes along the 6" Y dimension (not the 2" Z dimension) |
| 73 | + |
| 74 | +**Motor Plate Alignment Fix:** Added `plate_thickness/2` offset to motor plate hole positions to match actual angle iron placement: |
| 75 | +```scad |
| 76 | +_left_motor_x = -(_track_width/2 - _sandwich_spacing/2) + _motor_plate_inboard + _motor_plate_thick/2; |
| 77 | +_right_motor_x = (_track_width/2 - _sandwich_spacing/2) - _motor_plate_inboard - _motor_plate_thick/2; |
| 78 | +``` |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +### 4. Front Stiffener Plate Widening |
| 83 | +**Files Modified:** `lifetrac_v25.scad` |
| 84 | + |
| 85 | +**Change:** Extended the center (10") section from outer edge of left motor plate to outer edge of right motor plate. |
| 86 | + |
| 87 | +```scad |
| 88 | +// Before: |
| 89 | +translate([-MOTOR_PLATE_X, y_pos, z_start]) |
| 90 | +cube([2*MOTOR_PLATE_X, plate_thickness, center_height]); |
| 91 | +
|
| 92 | +// After: |
| 93 | +center_half_width = MOTOR_PLATE_X + MOTOR_PLATE_THICKNESS/2; |
| 94 | +translate([-center_half_width, y_pos, z_start]) |
| 95 | +cube([2*center_half_width, plate_thickness, center_height]); |
| 96 | +``` |
| 97 | + |
| 98 | +The outer 5" sections were also adjusted to start at the new center section edges. |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +### 5. Inner Wall Plate Reshaping |
| 103 | +**Files Modified:** `lifetrac_v25.scad` |
| 104 | + |
| 105 | +**Changes to `side_panel_left_inner()` and `side_panel_right_inner()`:** |
| 106 | + |
| 107 | +1. **Trimmed front section** beyond front stiffener plate position (`BOTTOM_PLATE_Y_END`) |
| 108 | + |
| 109 | +2. **Created flat 5" vertical section** at front, flush with front stiffener plate: |
| 110 | + - Starts at `BOTTOM_PLATE_INNER_TRIM` (31.75mm) |
| 111 | + - Height: 127mm (5") |
| 112 | + - Matches outer section height of front stiffener plate |
| 113 | + |
| 114 | +3. **Angled continuation** from top of 5" section to existing slope line: |
| 115 | + - Removes triangular section between flat top and original slope |
| 116 | + - Creates smooth transition to upper panel profile |
| 117 | + |
| 118 | +```scad |
| 119 | +// Key parameters: |
| 120 | +flat_section_height = 127.0; // 5" flat section at front |
| 121 | +flat_section_top = BOTTOM_PLATE_INNER_TRIM + flat_section_height; |
| 122 | +``` |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +## Technical Notes |
| 127 | + |
| 128 | +### Coordinate System Reminder |
| 129 | +For frame tubes after `rotate([90, 0, 0])` in assembly: |
| 130 | +- Part Y (0 to 152.4mm) → World Z (height) |
| 131 | +- Part Z (0 to 50.8mm) → World -Y (depth) |
| 132 | + |
| 133 | +### Part Module Pattern |
| 134 | +- Individual part files use underscore-prefixed modules: `_part_xxx()` |
| 135 | +- `structural_parts.scad` provides wrapper modules: `part_xxx()` |
| 136 | +- Wrappers pass through parameters like `show_holes` |
| 137 | + |
| 138 | +### Hole Count Summary |
| 139 | +| Part | Holes | Description | |
| 140 | +|------|-------|-------------| |
| 141 | +| T1 Front Frame Tube | 24 | 6 positions × 2 faces × 2 holes | |
| 142 | +| T2 Rear Frame Tube | 24 | 6 positions × 2 faces × 2 holes | |
| 143 | +| T3 Arm Crossbeam | Existing | Via angle iron mounts | |
| 144 | + |
| 145 | +--- |
| 146 | + |
| 147 | +## Files Modified |
| 148 | +- `lifetrac_v25.scad` - Main assembly |
| 149 | +- `parts/structural/tube_t1_front_frame.scad` - Front frame tube part |
| 150 | +- `parts/structural/tube_t2_rear_frame.scad` - Rear frame tube part |
| 151 | +- `parts/structural/tube_t3_arm_crossbeam.scad` - Arm crossbeam part |
| 152 | +- `parts/structural/structural_parts.scad` - Wrapper modules |
| 153 | + |
| 154 | +--- |
| 155 | + |
| 156 | +## Part File Details |
| 157 | + |
| 158 | +### T1: Front Cross Frame Tube |
| 159 | +**File:** `parts/structural/tube_t1_front_frame.scad` |
| 160 | + |
| 161 | +**Material:** 2"×6"×1/4" Rectangular Tubing (50.8mm × 152.4mm × 6.35mm wall) |
| 162 | + |
| 163 | +**Quantity:** 1 piece |
| 164 | + |
| 165 | +**Dimensions:** |
| 166 | +- Length: `TRACK_WIDTH + SANDWICH_SPACING + 2*PANEL_THICKNESS + 2*12.7mm` (extends 1/2" past outer panels) |
| 167 | +- Width: 152.4mm (6") |
| 168 | +- Height: 50.8mm (2") |
| 169 | + |
| 170 | +**Bolt Holes Added:** |
| 171 | +- 24 total holes (6 X positions × 2 faces × 2 holes per position) |
| 172 | +- 1/2" diameter |
| 173 | +- Drilled through top and bottom faces (Z direction in part coords) |
| 174 | +- Y positions: ~50.8mm and ~101.6mm from edge |
| 175 | + |
| 176 | +**X Position Calculations:** |
| 177 | +```scad |
| 178 | +// Panel positions |
| 179 | +_left_outer_x = -(_track_width/2 + _sandwich_spacing/2); |
| 180 | +_left_inner_x = -(_track_width/2 - _sandwich_spacing/2) + _panel_thick; |
| 181 | +_right_inner_x = (_track_width/2 - _sandwich_spacing/2) - _panel_thick; |
| 182 | +_right_outer_x = (_track_width/2 + _sandwich_spacing/2); |
| 183 | +
|
| 184 | +// Motor plate positions (with plate_thickness/2 offset) |
| 185 | +_left_motor_x = -(_track_width/2 - _sandwich_spacing/2) + _motor_plate_inboard + _motor_plate_thick/2; |
| 186 | +_right_motor_x = (_track_width/2 - _sandwich_spacing/2) - _motor_plate_inboard - _motor_plate_thick/2; |
| 187 | +
|
| 188 | +// Hole X positions (1" inset from face toward center) |
| 189 | +PART_T1_HOLE_X = [ |
| 190 | + _left_outer_x + _angle_thick + _hole_inset, |
| 191 | + _left_inner_x + _hole_inset, |
| 192 | + _left_motor_x + _hole_inset, |
| 193 | + _right_motor_x - _hole_inset, |
| 194 | + _right_inner_x - _hole_inset, |
| 195 | + _right_outer_x - _angle_thick - _hole_inset |
| 196 | +]; |
| 197 | +``` |
| 198 | + |
| 199 | +**Module Signature:** |
| 200 | +```scad |
| 201 | +module _part_t1_front_frame_tube(show_cutaway=false, show_holes=true) |
| 202 | +``` |
| 203 | + |
| 204 | +--- |
| 205 | + |
| 206 | +### T2: Rear Cross Frame Tube |
| 207 | +**File:** `parts/structural/tube_t2_rear_frame.scad` |
| 208 | + |
| 209 | +**Material:** 2"×6"×1/4" Rectangular Tubing (identical to T1) |
| 210 | + |
| 211 | +**Quantity:** 1 piece |
| 212 | + |
| 213 | +**Dimensions:** Same as T1 |
| 214 | + |
| 215 | +**Bolt Holes:** Same pattern as T1 (24 holes) |
| 216 | + |
| 217 | +**Note:** Identical geometry to T1, positioned at rear wheel location in assembly. |
| 218 | + |
| 219 | +**Module Signature:** |
| 220 | +```scad |
| 221 | +module _part_t2_rear_frame_tube(show_cutaway=false, show_holes=true) |
| 222 | +``` |
| 223 | + |
| 224 | +--- |
| 225 | + |
| 226 | +### T3: Arm Crossbeam Tube |
| 227 | +**File:** `parts/structural/tube_t3_arm_crossbeam.scad` |
| 228 | + |
| 229 | +**Material:** 2"×6"×1/4" Rectangular Tubing |
| 230 | + |
| 231 | +**Quantity:** 1 piece |
| 232 | + |
| 233 | +**Length Calculation (Updated):** |
| 234 | +```scad |
| 235 | +// Crossbeam extends through inner arm CNC plates |
| 236 | +_arm_spacing = is_undef(ARM_SPACING) ? 900 : ARM_SPACING; |
| 237 | +_tube_w = is_undef(TUBE_2X6_1_4) ? 50.8 : TUBE_2X6_1_4[0]; // Arm tube width (2") |
| 238 | +
|
| 239 | +// Ends flush with inner face of inner arm CNC plates |
| 240 | +PART_T3_LENGTH = _arm_spacing - _tube_w; // ~849.2mm |
| 241 | +``` |
| 242 | + |
| 243 | +**Previous Length:** `ARM_SPACING` (900mm) - was too long |
| 244 | + |
| 245 | +**Intermediate Length:** `ARM_SPACING - TUBE_2X6_1_4[0] - 2*ARM_PLATE_THICKNESS` (~836.5mm) - was too short |
| 246 | + |
| 247 | +**Final Length:** `ARM_SPACING - TUBE_2X6_1_4[0]` (~849.2mm) - extends through plates |
| 248 | + |
| 249 | +**Module Signature:** |
| 250 | +```scad |
| 251 | +module _part_t3_arm_crossbeam(show_holes=true) |
| 252 | +``` |
| 253 | + |
| 254 | +--- |
| 255 | + |
| 256 | +### Structural Parts Wrapper Updates |
| 257 | +**File:** `parts/structural/structural_parts.scad` |
| 258 | + |
| 259 | +**Updated wrapper modules to pass new parameters:** |
| 260 | + |
| 261 | +```scad |
| 262 | +// T1: Front Cross Frame Tube (1 pc) |
| 263 | +use <tube_t1_front_frame.scad> |
| 264 | +module part_t1_front_frame_tube(show_cutaway=false, show_holes=true) { |
| 265 | + _part_t1_front_frame_tube(show_cutaway, show_holes); |
| 266 | +} |
| 267 | +
|
| 268 | +// T2: Rear Cross Frame Tube (1 pc) |
| 269 | +use <tube_t2_rear_frame.scad> |
| 270 | +module part_t2_rear_frame_tube(show_cutaway=false, show_holes=true) { |
| 271 | + _part_t2_rear_frame_tube(show_cutaway, show_holes); |
| 272 | +} |
| 273 | +``` |
| 274 | + |
| 275 | +--- |
| 276 | + |
| 277 | +## Assembly Integration |
| 278 | + |
| 279 | +### cross_frame_tubes() Module |
| 280 | +**Location:** `lifetrac_v25.scad`, lines ~3086-3105 |
| 281 | + |
| 282 | +```scad |
| 283 | +module cross_frame_tubes() { |
| 284 | + // Front frame tube (T1) |
| 285 | + // Part module: length in X, origin at X=0 center, Y=0, Z=0 (bottom) |
| 286 | + // Assembly needs: tube at Y=FRONT_FRAME_TUBE_Y, Z=FRAME_TUBE_Z |
| 287 | + // Rotate to get 6" width in Y, 2" height in Z |
| 288 | + translate([0, FRONT_FRAME_TUBE_Y + FRAME_TUBE_WIDTH, FRAME_TUBE_Z]) |
| 289 | + rotate([90, 0, 0]) |
| 290 | + part_t1_front_frame_tube(); |
| 291 | + |
| 292 | + // Rear frame tube (T2) |
| 293 | + translate([0, REAR_FRAME_TUBE_Y + FRAME_TUBE_WIDTH, FRAME_TUBE_Z]) |
| 294 | + rotate([90, 0, 0]) |
| 295 | + part_t2_rear_frame_tube(); |
| 296 | + |
| 297 | + // Angle iron mounts (16 total: 2 per tube face × 4 wall panels × 2 tubes) |
| 298 | + frame_tube_angle_irons(); |
| 299 | +} |
| 300 | +``` |
| 301 | + |
| 302 | +### CROSS_BEAM_SPAN Constant Update |
| 303 | +```scad |
| 304 | +// Cross beam span (extends through inner arm CNC plates) |
| 305 | +// Reduced by arm tube width (2") only - ends flush with inner face of plates |
| 306 | +CROSS_BEAM_SPAN = ARM_SPACING - TUBE_2X6_1_4[0]; // ~849mm |
| 307 | +``` |
0 commit comments