Skip to content

Commit 08c404e

Browse files
committed
Fix frame tubes, add bolt holes, widen stiffener
Correct frame tube orientation and placement (rotate T1/T2 and adjust translations), add 1/2" bolt hole pattern for angle-iron mounts on front/rear tubes (24 holes each, drilled through Z faces), and widen the front stiffener center section to span motor plate outer edges. Adjust T3 arm crossbeam length to extend through inner arm CNC plates and update CROSS_BEAM_SPAN accordingly. Reshape inner wall plates to include a 5" flat front section and a smooth angled transition; update structural wrapper modules to pass new parameters and integrate rotated tubes in assembly. Files touched: lifetrac_v25.scad, parts/structural/tube_t1_front_frame.scad, tube_t2_rear_frame.scad, tube_t3_arm_crossbeam.scad, structural_parts.scad.
1 parent ffe9545 commit 08c404e

File tree

1 file changed

+307
-0
lines changed

1 file changed

+307
-0
lines changed
Lines changed: 307 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,307 @@
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

Comments
 (0)