|
| 1 | +// cnclayout.scad |
| 2 | +// CNC layout for all plate steel parts |
| 3 | +// Generates 2D projection for plasma cutting |
| 4 | +// Part of LifeTrac v25 OpenSCAD design |
| 5 | + |
| 6 | +use <modules/plate_steel.scad> |
| 7 | + |
| 8 | +// Plate thicknesses |
| 9 | +PLATE_1_4 = 6.35; // 1/4" |
| 10 | +PLATE_1_2 = 12.7; // 1/2" |
| 11 | + |
| 12 | +// Layout spacing |
| 13 | +SPACING = 20; // mm between parts |
| 14 | +START_X = 10; |
| 15 | +START_Y = 10; |
| 16 | + |
| 17 | +// Color coding by thickness |
| 18 | +COLOR_1_4 = "blue"; |
| 19 | +COLOR_1_2 = "red"; |
| 20 | + |
| 21 | +// Current position tracking |
| 22 | +x_offset = START_X; |
| 23 | +y_offset = START_Y; |
| 24 | +row_height = 0; |
| 25 | + |
| 26 | +module layout_part(width, height, thickness, label, x, y) { |
| 27 | + translate([x, y, 0]) { |
| 28 | + projection(cut=false) { |
| 29 | + color(thickness == PLATE_1_4 ? COLOR_1_4 : COLOR_1_2) |
| 30 | + plate_steel(width, height, thickness, 6.35); |
| 31 | + } |
| 32 | + // Part label |
| 33 | + translate([5, 5, 0]) |
| 34 | + text(label, size=8, font="Liberation Sans:style=Bold"); |
| 35 | + |
| 36 | + // Thickness indicator |
| 37 | + translate([5, height - 15, 0]) |
| 38 | + text(str(thickness == PLATE_1_4 ? "1/4\"" : "1/2\""), size=6); |
| 39 | + } |
| 40 | +} |
| 41 | + |
| 42 | +// Layout all parts in rows |
| 43 | +// Row 1: Half-inch plates (wheel mounts and high-stress parts) |
| 44 | +layout_part(300, 300, PLATE_1_2, "A2-1 Wheel Mount FL", START_X, START_Y); |
| 45 | +layout_part(300, 300, PLATE_1_2, "A2-2 Wheel Mount FR", START_X + 300 + SPACING, START_Y); |
| 46 | +layout_part(300, 300, PLATE_1_2, "A2-3 Wheel Mount RL", START_X + 2*(300 + SPACING), START_Y); |
| 47 | +layout_part(300, 300, PLATE_1_2, "A2-4 Wheel Mount RR", START_X + 3*(300 + SPACING), START_Y); |
| 48 | + |
| 49 | +// Row 2: Half-inch plates continued |
| 50 | +layout_part(200, 200, PLATE_1_2, "C2-1 Bucket Attach L", START_X, START_Y + 300 + SPACING); |
| 51 | +layout_part(200, 200, PLATE_1_2, "C2-2 Bucket Attach R", START_X + 200 + SPACING, START_Y + 300 + SPACING); |
| 52 | +layout_part(100, 150, PLATE_1_2, "Cyl Lug 1", START_X + 2*(200 + SPACING), START_Y + 300 + SPACING); |
| 53 | +layout_part(100, 150, PLATE_1_2, "Cyl Lug 2", START_X + 2*(200 + SPACING) + 100 + SPACING, START_Y + 300 + SPACING); |
| 54 | +layout_part(100, 150, PLATE_1_2, "Cyl Lug 3", START_X + 2*(200 + SPACING) + 2*(100 + SPACING), START_Y + 300 + SPACING); |
| 55 | +layout_part(100, 150, PLATE_1_2, "Cyl Lug 4", START_X + 2*(200 + SPACING) + 3*(100 + SPACING), START_Y + 300 + SPACING); |
| 56 | + |
| 57 | +// Row 3: Quarter-inch plates (bucket) |
| 58 | +layout_part(1100, 600, PLATE_1_4, "E1-1 Bucket Bottom", START_X, START_Y + 2*(300 + SPACING)); |
| 59 | + |
| 60 | +// Row 4: Quarter-inch plates (bucket continued) |
| 61 | +layout_part(1100, 400, PLATE_1_4, "E1-2 Bucket Back", START_X, START_Y + 2*(300 + SPACING) + 600 + SPACING); |
| 62 | + |
| 63 | +// Row 5: Quarter-inch plates (bucket sides and arms) |
| 64 | +layout_part(600, 400, PLATE_1_4, "E1-3 Bucket Side L", START_X, START_Y + 2*(300 + SPACING) + 600 + 400 + 2*SPACING); |
| 65 | +layout_part(600, 400, PLATE_1_4, "E1-4 Bucket Side R", START_X + 600 + SPACING, START_Y + 2*(300 + SPACING) + 600 + 400 + 2*SPACING); |
| 66 | + |
| 67 | +// Row 6: Quarter-inch plates (arm reinforcements and deck) |
| 68 | +layout_part(150, 1200, PLATE_1_4, "C1-1 Arm Reinf L", START_X, START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 3*SPACING); |
| 69 | +layout_part(150, 1200, PLATE_1_4, "C1-2 Arm Reinf R", START_X + 150 + SPACING, START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 3*SPACING); |
| 70 | + |
| 71 | +// Row 7: Quarter-inch plates (standing deck) |
| 72 | +layout_part(1000, 400, PLATE_1_4, "F1 Standing Deck", START_X + 2*(150 + SPACING), START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 3*SPACING); |
| 73 | + |
| 74 | +// Row 8: Quarter-inch plate (control housing base) |
| 75 | +layout_part(300, 200, PLATE_1_4, "G1 Housing Base", START_X, START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 1200 + 4*SPACING); |
| 76 | + |
| 77 | +// Add title and legend |
| 78 | +translate([10, START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 1200 + 200 + 5*SPACING, 0]) |
| 79 | +text("LifeTrac v25 CNC Layout", size=16, font="Liberation Sans:style=Bold"); |
| 80 | + |
| 81 | +translate([10, START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 1200 + 180 + 5*SPACING, 0]) |
| 82 | +text("Blue = 1/4\" plate | Red = 1/2\" plate", size=10); |
| 83 | + |
| 84 | +// Add cutting instructions |
| 85 | +translate([10, START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 1200 + 160 + 5*SPACING, 0]) |
| 86 | +text("Maintain 3mm spacing between cuts", size=8); |
| 87 | + |
| 88 | +translate([10, START_Y + 2*(300 + SPACING) + 600 + 400 + 400 + 1200 + 145 + 5*SPACING, 0]) |
| 89 | +text("All corners 6.35mm radius", size=8); |
0 commit comments