From aef5928572f675cd14ced0e45f52c59e41910f26 Mon Sep 17 00:00:00 2001 From: johndoe6345789 Date: Wed, 21 Jan 2026 23:51:23 +0000 Subject: [PATCH] feat: add Bambu Lab A1 3D printer exploded diagrams Add complete exploded diagram package for the Bambu Lab A1 3D printer with 41 parts across 5 assemblies: - Printhead (8 parts): hotend, extruder, cooling fans, toolhead PCB - Motion System (9 parts): linear rails, carriages, stepper motors, belts - Frame (8 parts): base frame, Z-columns, top beam, mounts - Heatbed (8 parts): heated plate, PEI surface, carriage, insulation - Electronics (8 parts): mainboard, PSU, LCD, WiFi module, wiring All parts include detailed 3D geometry for WebGL rendering and 2D geometry for SVG export. Co-Authored-By: Claude Opus 4.5 --- .../bambu-lab/a1/electronics/assembly.json | 15 + .../a1/electronics/parts/lcd-screen.json | 66 +++ .../a1/electronics/parts/mainboard.json | 88 ++++ .../a1/electronics/parts/power-supply.json | 88 ++++ .../a1/electronics/parts/power-switch.json | 59 +++ .../a1/electronics/parts/stepper-driver.json | 74 ++++ .../a1/electronics/parts/usb-port.json | 60 +++ .../a1/electronics/parts/wifi-module.json | 62 +++ .../a1/electronics/parts/wiring-harness.json | 84 ++++ .../bambu-lab/a1/frame/assembly.json | 84 ++++ .../bambu-lab/a1/frame/parts/base-frame.json | 86 ++++ .../bambu-lab/a1/frame/parts/footpad.json | 69 ++++ .../bambu-lab/a1/frame/parts/lcd-mount.json | 83 ++++ .../a1/frame/parts/spool-holder.json | 73 ++++ .../bambu-lab/a1/frame/parts/top-beam.json | 76 ++++ .../a1/frame/parts/z-column-left.json | 77 ++++ .../a1/frame/parts/z-column-right.json | 80 ++++ .../a1/frame/parts/z-motor-mount.json | 77 ++++ .../bambu-lab/a1/heatbed/assembly.json | 17 + .../a1/heatbed/parts/bed-heater.json | 71 ++++ .../a1/heatbed/parts/bed-insulation.json | 56 +++ .../bambu-lab/a1/heatbed/parts/bed-mount.json | 64 +++ .../a1/heatbed/parts/bed-thermistor.json | 55 +++ .../a1/heatbed/parts/build-surface.json | 56 +++ .../a1/heatbed/parts/heatbed-plate.json | 71 ++++ .../a1/heatbed/parts/purge-wiper.json | 64 +++ .../a1/heatbed/parts/y-carriage.json | 92 +++++ .../bambu-lab/a1/motion-system/assembly.json | 18 + .../a1/motion-system/parts/accelerometer.json | 68 ++++ .../motion-system/parts/belt-tensioner.json | 65 +++ .../motion-system/parts/x-axis-carriage.json | 64 +++ .../motion-system/parts/x-axis-endstop.json | 62 +++ .../a1/motion-system/parts/x-axis-rail.json | 65 +++ .../a1/motion-system/parts/x-motor.json | 72 ++++ .../a1/motion-system/parts/xy-belt.json | 67 +++ .../a1/motion-system/parts/y-axis-rail.json | 74 ++++ .../a1/motion-system/parts/y-motor.json | 75 ++++ .../bambu-lab/a1/printhead/assembly.json | 17 + .../a1/printhead/parts/cooling-fan.json | 263 ++++++++++++ .../a1/printhead/parts/extruder-gears.json | 275 +++++++++++++ .../a1/printhead/parts/extruder-motor.json | 282 +++++++++++++ .../a1/printhead/parts/filament-cutter.json | 283 +++++++++++++ .../a1/printhead/parts/hotend-fan.json | 289 +++++++++++++ .../bambu-lab/a1/printhead/parts/hotend.json | 381 +++++++++++++++++ .../bambu-lab/a1/printhead/parts/nozzle.json | 240 +++++++++++ .../a1/printhead/parts/toolhead-board.json | 384 ++++++++++++++++++ 46 files changed, 4891 insertions(+) create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/assembly.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/lcd-screen.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/mainboard.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-supply.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-switch.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/stepper-driver.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/usb-port.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wifi-module.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wiring-harness.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/assembly.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/base-frame.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/footpad.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/lcd-mount.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/spool-holder.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/top-beam.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-left.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-right.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-motor-mount.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/assembly.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-heater.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-insulation.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-mount.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-thermistor.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/build-surface.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/heatbed-plate.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/purge-wiper.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/y-carriage.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/assembly.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/accelerometer.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/belt-tensioner.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-carriage.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-endstop.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-rail.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-motor.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/xy-belt.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-axis-rail.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-motor.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/assembly.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/cooling-fan.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-gears.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-motor.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/filament-cutter.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend-fan.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/nozzle.json create mode 100644 exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/toolhead-board.json diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/assembly.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/assembly.json new file mode 100644 index 000000000..aa80f8757 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/assembly.json @@ -0,0 +1,15 @@ +{ + "id": "electronics", + "name": "Electronics Assembly", + "description": "Bambu Lab A1 electronics system - main control board, power supply, display, connectivity, and wiring", + "parts": [ + "mainboard", + "power-supply", + "lcd-screen", + "wifi-module", + "stepper-driver", + "power-switch", + "usb-port", + "wiring-harness" + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/lcd-screen.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/lcd-screen.json new file mode 100644 index 000000000..75bb28287 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/lcd-screen.json @@ -0,0 +1,66 @@ +{ + "id": "lcd-screen", + "name": "Touch Screen Display", + "partNumber": "BL-A1-LCD01", + "material": "glass", + "quantity": 1, + "weight": 125.0, + "weightUnit": "g", + "baseY": 160, + "description": "2.8 inch capacitive touch LCD display - IPS panel with RGB interface", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "Plastic spudger", "size": "-", "required": true }, + { "name": "ESD wrist strap", "size": "-", "required": true } + ], + "hardware": [ + { "name": "M2.5 screw", "spec": "M2.5x5", "qty": 4, "reusable": true }, + { "name": "FFC cable", "spec": "24-pin 0.5mm pitch", "qty": 1, "reusable": true }, + { "name": "Foam gasket", "spec": "Display bezel", "qty": 1, "reusable": false } + ], + "torque": [ + { "fastener": "M2.5 screws", "value": 0.3, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "Very light torque - do not crack display" } + ], + "notes": [ + "Handle display by edges only - avoid touching screen surface", + "FFC cable is fragile - lift connector lock before removing", + "Clean screen with microfiber cloth before reassembly", + "Check ribbon cable orientation - contacts face down" + ] + }, + "geometry": [ + { "type": "rect", "width": 85, "height": 60, "rx": 3, "fill": "#1a1a1a" }, + { "type": "rect", "width": 70, "height": 50, "rx": 1, "fill": "#0a2040" }, + { "type": "rect", "width": 65, "height": 45, "fill": "#102050" }, + { "type": "rect", "width": 20, "height": 8, "offsetY": 30, "fill": "#404040" } + ], + "geometry3d": [ + { "type": "box", "width": 70, "height": 4, "depth": 50, "fill": "#1a1a1a" }, + + { "type": "box", "width": 62, "height": 1, "depth": 42, "offsetY": 2.5, "fill": "#0a1525" }, + + { "type": "box", "width": 60, "height": 0.5, "depth": 40, "offsetY": 3, "fill": "#102040" }, + + { "type": "box", "width": 72, "height": 6, "depth": 52, "offsetY": -1, "fill": "#252530" }, + { "type": "box", "width": 64, "height": 8, "depth": 44, "offsetY": -1, "subtract": true }, + + { "type": "box", "width": 74, "height": 2, "depth": 54, "offsetY": -4, "fill": "#353540" }, + + { "type": "box", "width": 20, "height": 3, "depth": 6, "offsetY": -5.5, "offsetZ": 28, "fill": "#404045" }, + { "type": "box", "width": 18, "height": 2, "depth": 2, "offsetY": -5, "offsetZ": 30, "fill": "#808080" }, + + { "type": "box", "width": 68, "height": 12, "depth": 5, "offsetY": -4, "offsetZ": -25, "fill": "#006030" }, + { "type": "box", "width": 10, "height": 3, "depth": 10, "offsetY": 0, "offsetZ": -30, "fill": "#303030" }, + + { "type": "box", "width": 25, "height": 1.5, "depth": 8, "offsetY": -10, "offsetZ": -30, "fill": "#c0c0c0" }, + + { "type": "cylinder", "r": 1.3, "height": 8, "offsetX": -32, "offsetY": -2, "offsetZ": -22, "fill": "#606060" }, + { "type": "cylinder", "r": 1.3, "height": 8, "offsetX": 32, "offsetY": -2, "offsetZ": -22, "fill": "#606060" }, + { "type": "cylinder", "r": 1.3, "height": 8, "offsetX": -32, "offsetY": -2, "offsetZ": 22, "fill": "#606060" }, + { "type": "cylinder", "r": 1.3, "height": 8, "offsetX": 32, "offsetY": -2, "offsetZ": 22, "fill": "#606060" }, + + { "type": "cylinder", "r": 2, "height": 3, "offsetX": -28, "offsetY": 0, "offsetZ": -18, "fill": "#202025" }, + { "type": "cylinder", "r": 1.5, "height": 2, "offsetX": -28, "offsetY": 1.5, "offsetZ": -18, "fill": "#101015" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/mainboard.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/mainboard.json new file mode 100644 index 000000000..1a99fec21 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/mainboard.json @@ -0,0 +1,88 @@ +{ + "id": "mainboard", + "name": "Main Control Board (MCU)", + "partNumber": "BL-A1-MCB01", + "material": "pcb", + "quantity": 1, + "weight": 185.0, + "weightUnit": "g", + "baseY": 0, + "description": "ARM Cortex-M4 based main controller - handles motion control, temperature, and communication", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "ESD wrist strap", "size": "-", "required": true }, + { "name": "Phillips screwdriver", "size": "PH1", "required": true }, + { "name": "Multimeter", "size": "-", "required": false } + ], + "hardware": [ + { "name": "M3 standoff", "spec": "M3x6", "qty": 4, "reusable": true }, + { "name": "M3 screw", "spec": "M3x6", "qty": 4, "reusable": true }, + { "name": "Thermal pad", "spec": "20x20x1mm", "qty": 1, "reusable": false } + ], + "torque": [ + { "fastener": "M3 mounting screws", "value": 0.5, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "Do not overtighten - PCB may crack" } + ], + "notes": [ + "Disconnect all power before handling", + "Always use ESD protection when handling PCB", + "Note connector positions before removal", + "Check firmware version compatibility before replacement", + "Apply thermal paste between MCU and heatsink" + ] + }, + "geometry": [ + { "type": "rect", "width": 120, "height": 85, "rx": 3, "fill": "#006030" }, + { "type": "rect", "width": 110, "height": 75, "rx": 2, "fill": "#005528" }, + { "type": "rect", "width": 18, "height": 18, "offsetX": -30, "offsetY": -15, "fill": "#303030" }, + { "type": "rect", "width": 12, "height": 12, "offsetX": 15, "offsetY": -20, "fill": "#303030" }, + { "type": "rect", "width": 35, "height": 8, "offsetX": -35, "offsetY": 30, "fill": "#c0c0c0" }, + { "type": "rect", "width": 25, "height": 8, "offsetX": 10, "offsetY": 30, "fill": "#c0c0c0" }, + { "type": "rect", "width": 15, "height": 8, "offsetX": 45, "offsetY": 30, "fill": "#c0c0c0" }, + { "type": "circle", "r": 3, "offsetX": -52, "offsetY": -35, "fill": "#c0c0c0" }, + { "type": "circle", "r": 3, "offsetX": 52, "offsetY": -35, "fill": "#c0c0c0" }, + { "type": "circle", "r": 3, "offsetX": -52, "offsetY": 35, "fill": "#c0c0c0" }, + { "type": "circle", "r": 3, "offsetX": 52, "offsetY": 35, "fill": "#c0c0c0" } + ], + "geometry3d": [ + { "type": "box", "width": 100, "height": 2, "depth": 70, "fill": "#006030" }, + + { "type": "box", "width": 16, "height": 3.5, "depth": 16, "offsetX": -28, "offsetY": 2.75, "offsetZ": -12, "fill": "#1a1a1a" }, + { "type": "box", "width": 14, "height": 1, "depth": 14, "offsetX": -28, "offsetY": 5, "offsetZ": -12, "fill": "#404040" }, + + { "type": "box", "width": 10, "height": 2.5, "depth": 10, "offsetX": 12, "offsetY": 2.25, "offsetZ": -18, "fill": "#1a1a1a" }, + + { "type": "box", "width": 8, "height": 2, "depth": 8, "offsetX": 32, "offsetY": 2, "offsetZ": -18, "fill": "#1a1a1a" }, + { "type": "box", "width": 8, "height": 2, "depth": 8, "offsetX": 32, "offsetY": 2, "offsetZ": -5, "fill": "#1a1a1a" }, + { "type": "box", "width": 8, "height": 2, "depth": 8, "offsetX": 32, "offsetY": 2, "offsetZ": 8, "fill": "#1a1a1a" }, + + { "type": "box", "width": 30, "height": 8, "depth": 6, "offsetX": -30, "offsetY": 5, "offsetZ": 28, "fill": "#c0c0c0" }, + { "type": "box", "width": 28, "height": 6, "depth": 4, "offsetX": -30, "offsetY": 5, "offsetZ": 28, "subtract": true }, + + { "type": "box", "width": 22, "height": 8, "depth": 6, "offsetX": 8, "offsetY": 5, "offsetZ": 28, "fill": "#c0c0c0" }, + { "type": "box", "width": 20, "height": 6, "depth": 4, "offsetX": 8, "offsetY": 5, "offsetZ": 28, "subtract": true }, + + { "type": "box", "width": 14, "height": 8, "depth": 6, "offsetX": 38, "offsetY": 5, "offsetZ": 28, "fill": "#c0c0c0" }, + { "type": "box", "width": 12, "height": 6, "depth": 4, "offsetX": 38, "offsetY": 5, "offsetZ": 28, "subtract": true }, + + { "type": "cylinder", "r": 8, "height": 10, "offsetX": -38, "offsetY": 6, "offsetZ": 5, "fill": "#1a1a1a" }, + { "type": "cylinder", "r": 7, "height": 8, "offsetX": -38, "offsetY": 8, "offsetZ": 5, "fill": "#303030" }, + + { "type": "cylinder", "r": 6, "height": 8, "offsetX": -20, "offsetY": 5, "offsetZ": 5, "fill": "#1a1a1a" }, + { "type": "cylinder", "r": 5, "height": 6, "offsetX": -20, "offsetY": 6, "offsetZ": 5, "fill": "#303030" }, + + { "type": "box", "width": 3, "height": 4, "depth": 6, "offsetX": -5, "offsetY": 3, "offsetZ": 8, "fill": "#ffcc00" }, + { "type": "box", "width": 3, "height": 4, "depth": 6, "offsetX": 0, "offsetY": 3, "offsetZ": 8, "fill": "#00cc00" }, + { "type": "box", "width": 3, "height": 4, "depth": 6, "offsetX": 5, "offsetY": 3, "offsetZ": 8, "fill": "#cc0000" }, + + { "type": "box", "width": 12, "height": 6, "depth": 5, "offsetX": 20, "offsetY": 4, "offsetZ": -28, "fill": "#303030" }, + + { "type": "box", "width": 6, "height": 1.5, "depth": 10, "offsetX": -15, "offsetY": 1.75, "offsetZ": -25, "fill": "#505050" }, + { "type": "box", "width": 6, "height": 1.5, "depth": 10, "offsetX": -5, "offsetY": 1.75, "offsetZ": -25, "fill": "#505050" }, + + { "type": "cylinder", "r": 1.6, "height": 4, "offsetX": -45, "offsetY": 0, "offsetZ": -30, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 1.6, "height": 4, "offsetX": 45, "offsetY": 0, "offsetZ": -30, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 1.6, "height": 4, "offsetX": -45, "offsetY": 0, "offsetZ": 30, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 1.6, "height": 4, "offsetX": 45, "offsetY": 0, "offsetZ": 30, "fill": "#c0c0c0" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-supply.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-supply.json new file mode 100644 index 000000000..8e2a0dcec --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-supply.json @@ -0,0 +1,88 @@ +{ + "id": "power-supply", + "name": "24V Power Supply Unit", + "partNumber": "BL-A1-PSU24", + "material": "aluminum", + "quantity": 1, + "weight": 650.0, + "weightUnit": "g", + "baseY": 80, + "description": "24V 350W switching power supply - Mean Well style enclosed PSU with active cooling", + "installation": { + "tools": [ + { "name": "Phillips screwdriver", "size": "PH2", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Wire stripper", "size": "18-22 AWG", "required": true }, + { "name": "Multimeter", "size": "-", "required": true } + ], + "hardware": [ + { "name": "M4 screw", "spec": "M4x8", "qty": 4, "reusable": true }, + { "name": "Ring terminal", "spec": "M4 14-16 AWG", "qty": 2, "reusable": false }, + { "name": "IEC C14 connector", "spec": "10A 250V", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "M4 mounting screws", "value": 1.2, "unit": "Nm", "sequence": "Corner to corner", "notes": "Ensure PSU is level" }, + { "fastener": "Terminal screws", "value": 0.8, "unit": "Nm", "sequence": "", "notes": "Check wire is secure" } + ], + "notes": [ + "DANGER: Mains voltage present - disconnect AC power first", + "Wait 5 minutes for capacitors to discharge", + "Verify input voltage selector matches local mains", + "Check output voltage is 24.0V +/- 0.5V before connecting", + "Ensure adequate ventilation around PSU" + ] + }, + "geometry": [ + { "type": "rect", "width": 140, "height": 70, "rx": 2, "fill": "#404040" }, + { "type": "rect", "width": 130, "height": 60, "rx": 1, "fill": "#353535" }, + { "type": "rect", "width": 50, "height": 15, "offsetX": -35, "offsetY": -20, "fill": "#1a1a1a" }, + { "type": "circle", "r": 20, "offsetX": 35, "offsetY": 0, "fill": "#2a2a2a" }, + { "type": "circle", "r": 15, "offsetX": 35, "offsetY": 0, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 5, "offsetX": -55, "offsetY": 25, "fill": "#c0c0c0" }, + { "type": "rect", "width": 8, "height": 5, "offsetX": -40, "offsetY": 25, "fill": "#c0c0c0" }, + { "type": "rect", "width": 8, "height": 5, "offsetX": -25, "offsetY": 25, "fill": "#c0c0c0" } + ], + "geometry3d": [ + { "type": "box", "width": 115, "height": 50, "depth": 200, "fill": "#383840" }, + + { "type": "box", "width": 117, "height": 2, "depth": 202, "offsetY": 26, "fill": "#454550" }, + { "type": "box", "width": 117, "height": 2, "depth": 202, "offsetY": -26, "fill": "#454550" }, + + { "type": "box", "width": 50, "height": 35, "depth": 8, "offsetX": -25, "offsetZ": -96, "fill": "#1a1a1a" }, + { "type": "box", "width": 44, "height": 29, "depth": 20, "offsetX": -25, "offsetZ": -92, "subtract": true }, + + { "type": "cylinder", "r": 20, "height": 8, "rotateX": 90, "offsetX": 30, "offsetZ": 96, "fill": "#303035" }, + { "type": "cylinder", "r": 18, "height": 10, "rotateX": 90, "offsetX": 30, "offsetZ": 96, "subtract": true }, + { "type": "box", "width": 2, "height": 36, "depth": 5, "offsetX": 30, "offsetZ": 96, "fill": "#252530" }, + { "type": "box", "width": 36, "height": 2, "depth": 5, "offsetX": 30, "offsetZ": 96, "fill": "#252530" }, + { "type": "box", "width": 26, "height": 26, "depth": 5, "rotateZ": 45, "offsetX": 30, "offsetZ": 96, "fill": "#252530" }, + + { "type": "box", "width": 8, "height": 10, "depth": 12, "offsetX": -45, "offsetY": -20, "offsetZ": -96, "fill": "#c0c0c0" }, + { "type": "box", "width": 8, "height": 10, "depth": 12, "offsetX": -32, "offsetY": -20, "offsetZ": -96, "fill": "#c0c0c0" }, + { "type": "box", "width": 8, "height": 10, "depth": 12, "offsetX": -19, "offsetY": -20, "offsetZ": -96, "fill": "#c0c0c0" }, + { "type": "box", "width": 8, "height": 10, "depth": 12, "offsetX": -6, "offsetY": -20, "offsetZ": -96, "fill": "#ffcc00" }, + { "type": "box", "width": 8, "height": 10, "depth": 12, "offsetX": 7, "offsetY": -20, "offsetZ": -96, "fill": "#ffcc00" }, + + { "type": "cylinder", "r": 2, "height": 8, "offsetX": -45, "offsetY": -20, "offsetZ": -102, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": -32, "offsetY": -20, "offsetZ": -102, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": -19, "offsetY": -20, "offsetZ": -102, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": -6, "offsetY": -20, "offsetZ": -102, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": 7, "offsetY": -20, "offsetZ": -102, "fill": "#808080" }, + + { "type": "box", "width": 30, "height": 10, "depth": 5, "offsetX": 35, "offsetY": -20, "offsetZ": -98, "fill": "#00aa00" }, + + { "type": "cylinder", "r": 3, "height": 8, "offsetX": 25, "offsetY": -20, "offsetZ": -96, "fill": "#606060" }, + + { "type": "box", "width": 100, "height": 3, "depth": 180, "offsetY": 23, "fill": "#303035" }, + { "type": "box", "width": 3, "height": 3, "depth": 170, "offsetX": -40, "offsetY": 23, "fill": "#404045" }, + { "type": "box", "width": 3, "height": 3, "depth": 170, "offsetX": -20, "offsetY": 23, "fill": "#404045" }, + { "type": "box", "width": 3, "height": 3, "depth": 170, "offsetX": 0, "offsetY": 23, "fill": "#404045" }, + { "type": "box", "width": 3, "height": 3, "depth": 170, "offsetX": 20, "offsetY": 23, "fill": "#404045" }, + { "type": "box", "width": 3, "height": 3, "depth": 170, "offsetX": 40, "offsetY": 23, "fill": "#404045" }, + + { "type": "cylinder", "r": 2.5, "height": 55, "offsetX": -52, "offsetY": 0, "offsetZ": -90, "fill": "#606060" }, + { "type": "cylinder", "r": 2.5, "height": 55, "offsetX": 52, "offsetY": 0, "offsetZ": -90, "fill": "#606060" }, + { "type": "cylinder", "r": 2.5, "height": 55, "offsetX": -52, "offsetY": 0, "offsetZ": 90, "fill": "#606060" }, + { "type": "cylinder", "r": 2.5, "height": 55, "offsetX": 52, "offsetY": 0, "offsetZ": 90, "fill": "#606060" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-switch.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-switch.json new file mode 100644 index 000000000..a698791f2 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/power-switch.json @@ -0,0 +1,59 @@ +{ + "id": "power-switch", + "name": "Main Power Switch", + "partNumber": "BL-A1-PSW01", + "material": "plastic", + "quantity": 1, + "weight": 25.0, + "weightUnit": "g", + "baseY": 340, + "description": "Illuminated rocker switch - DPST 16A 250VAC with integrated LED indicator", + "installation": { + "tools": [ + { "name": "Flathead screwdriver", "size": "3mm", "required": true }, + { "name": "Wire crimper", "size": "16-22 AWG", "required": false } + ], + "hardware": [ + { "name": "Spade terminal", "spec": "6.3mm female", "qty": 4, "reusable": false }, + { "name": "Panel gasket", "spec": "30x22mm", "qty": 1, "reusable": false } + ], + "torque": [], + "notes": [ + "DANGER: Mains voltage - ensure power is disconnected", + "Switch snaps into panel cutout - no screws required", + "LED indicator shows power-on state", + "Verify wiring matches original before powering on", + "Test switch operation before closing enclosure" + ] + }, + "geometry": [ + { "type": "rect", "width": 35, "height": 20, "rx": 3, "fill": "#1a1a1a" }, + { "type": "rect", "width": 28, "height": 14, "rx": 7, "fill": "#303030" }, + { "type": "rect", "width": 12, "height": 10, "offsetX": -5, "rx": 2, "fill": "#cc0000" }, + { "type": "circle", "r": 2, "offsetX": 8, "offsetY": 0, "fill": "#00ff00" } + ], + "geometry3d": [ + { "type": "box", "width": 30, "height": 22, "depth": 25, "fill": "#1a1a1a" }, + + { "type": "box", "width": 24, "height": 6, "depth": 14, "offsetY": 14, "fill": "#252530" }, + { "type": "box", "width": 22, "height": 3, "depth": 12, "offsetY": 16.5, "fill": "#303035" }, + + { "type": "box", "width": 10, "height": 8, "depth": 12, "rotateZ": -15, "offsetX": -4, "offsetY": 16, "fill": "#cc0000" }, + { "type": "box", "width": 9, "height": 7, "depth": 11, "rotateZ": -15, "offsetX": -4, "offsetY": 16.5, "fill": "#dd2020" }, + + { "type": "cylinder", "r": 2, "height": 4, "offsetX": 8, "offsetY": 16, "fill": "#00aa00" }, + { "type": "cylinder", "r": 1.5, "height": 2, "offsetX": 8, "offsetY": 18.5, "fill": "#00ff00" }, + + { "type": "box", "width": 5, "height": 8, "depth": 3, "offsetX": -10, "offsetY": -15, "fill": "#c0c0c0" }, + { "type": "box", "width": 5, "height": 8, "depth": 3, "offsetX": -3, "offsetY": -15, "fill": "#c0c0c0" }, + { "type": "box", "width": 5, "height": 8, "depth": 3, "offsetX": 4, "offsetY": -15, "fill": "#c0c0c0" }, + { "type": "box", "width": 5, "height": 8, "depth": 3, "offsetX": 11, "offsetY": -15, "fill": "#c0c0c0" }, + + { "type": "box", "width": 32, "height": 2, "depth": 27, "offsetY": 10, "fill": "#303035" }, + + { "type": "box", "width": 2, "height": 5, "depth": 2, "offsetX": -13, "offsetY": 3, "offsetZ": -10, "fill": "#404045" }, + { "type": "box", "width": 2, "height": 5, "depth": 2, "offsetX": 13, "offsetY": 3, "offsetZ": -10, "fill": "#404045" }, + { "type": "box", "width": 2, "height": 5, "depth": 2, "offsetX": -13, "offsetY": 3, "offsetZ": 10, "fill": "#404045" }, + { "type": "box", "width": 2, "height": 5, "depth": 2, "offsetX": 13, "offsetY": 3, "offsetZ": 10, "fill": "#404045" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/stepper-driver.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/stepper-driver.json new file mode 100644 index 000000000..7d4c4b50f --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/stepper-driver.json @@ -0,0 +1,74 @@ +{ + "id": "stepper-driver", + "name": "TMC Stepper Driver", + "partNumber": "BL-A1-TMC22", + "material": "pcb", + "quantity": 4, + "weight": 8.0, + "weightUnit": "g", + "baseY": 280, + "description": "TMC2209 silent stepper driver module - StealthChop/SpreadCycle with UART interface", + "installation": { + "tools": [ + { "name": "ESD wrist strap", "size": "-", "required": true }, + { "name": "Small flathead screwdriver", "size": "2mm", "required": true }, + { "name": "Thermal paste", "size": "-", "required": false } + ], + "hardware": [ + { "name": "Heatsink", "spec": "9x9x5mm", "qty": 1, "reusable": true }, + { "name": "Thermal tape", "spec": "Double-sided", "qty": 1, "reusable": false } + ], + "torque": [], + "notes": [ + "Ensure correct orientation before inserting - EN pin location varies", + "Set Vref to 1.0V for stock motors (0.8A RMS)", + "Heatsink required for reliable operation", + "StealthChop enabled by default - UART for SpreadCycle", + "Allow 30 seconds between power cycles" + ] + }, + "geometry": [ + { "type": "rect", "width": 20, "height": 15, "rx": 1, "fill": "#006030" }, + { "type": "rect", "width": 8, "height": 8, "offsetY": -1, "fill": "#303030" }, + { "type": "rect", "width": 18, "height": 3, "offsetY": 5, "fill": "#c0c0c0" }, + { "type": "circle", "r": 2, "offsetX": 7, "offsetY": -4, "fill": "#c0c0c0" } + ], + "geometry3d": [ + { "type": "box", "width": 15, "height": 1.2, "depth": 20, "fill": "#006030" }, + + { "type": "box", "width": 6, "height": 1.5, "depth": 6, "offsetY": 1.35, "offsetZ": -3, "fill": "#1a1a1a" }, + + { "type": "box", "width": 9, "height": 5, "depth": 9, "offsetY": 4.6, "offsetZ": -3, "fill": "#202025" }, + { "type": "box", "width": 8.5, "height": 1, "depth": 8.5, "offsetY": 7.6, "offsetZ": -3, "fill": "#303035" }, + { "type": "box", "width": 7, "height": 0.5, "depth": 7, "offsetY": 7.35, "offsetZ": -3, "fill": "#252530" }, + + { "type": "box", "width": 13, "height": 2.5, "depth": 2.5, "offsetY": 1.85, "offsetZ": 7.5, "fill": "#c0c0c0" }, + { "type": "box", "width": 13, "height": 2.5, "depth": 2.5, "offsetY": 1.85, "offsetZ": -13.5, "fill": "#c0c0c0" }, + + { "type": "cylinder", "r": 1.8, "height": 1.5, "offsetX": 5, "offsetY": 1.35, "offsetZ": 3, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 1, "height": 0.5, "offsetX": 5, "offsetY": 2.35, "offsetZ": 3, "fill": "#606060" }, + + { "type": "box", "width": 2.5, "height": 1.5, "depth": 2.5, "offsetX": -5, "offsetY": 1.35, "offsetZ": 3, "fill": "#1a1a1a" }, + + { "type": "box", "width": 1.5, "height": 1, "depth": 1.5, "offsetX": 5, "offsetY": 1.1, "offsetZ": -3, "fill": "#1a1a1a" }, + { "type": "box", "width": 1.5, "height": 1, "depth": 1.5, "offsetX": -5, "offsetY": 1.1, "offsetZ": -3, "fill": "#1a1a1a" }, + { "type": "box", "width": 1.5, "height": 1, "depth": 1.5, "offsetX": 5, "offsetY": 1.1, "offsetZ": -8, "fill": "#1a1a1a" }, + { "type": "box", "width": 1.5, "height": 1, "depth": 1.5, "offsetX": -5, "offsetY": 1.1, "offsetZ": -8, "fill": "#1a1a1a" }, + + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": -6, "offsetY": -1.5, "offsetZ": 8, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": -4, "offsetY": -1.5, "offsetZ": 8, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": -2, "offsetY": -1.5, "offsetZ": 8, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 0, "offsetY": -1.5, "offsetZ": 8, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 2, "offsetY": -1.5, "offsetZ": 8, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 4, "offsetY": -1.5, "offsetZ": 8, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 6, "offsetY": -1.5, "offsetZ": 8, "fill": "#c0c0c0" }, + + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": -6, "offsetY": -1.5, "offsetZ": -14, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": -4, "offsetY": -1.5, "offsetZ": -14, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": -2, "offsetY": -1.5, "offsetZ": -14, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 0, "offsetY": -1.5, "offsetZ": -14, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 2, "offsetY": -1.5, "offsetZ": -14, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 4, "offsetY": -1.5, "offsetZ": -14, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 0.3, "height": 3, "offsetX": 6, "offsetY": -1.5, "offsetZ": -14, "fill": "#c0c0c0" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/usb-port.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/usb-port.json new file mode 100644 index 000000000..2a03ea6ce --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/usb-port.json @@ -0,0 +1,60 @@ +{ + "id": "usb-port", + "name": "USB Connectivity Port", + "partNumber": "BL-A1-USB01", + "material": "plastic", + "quantity": 1, + "weight": 15.0, + "weightUnit": "g", + "baseY": 400, + "description": "USB Type-A and Type-C combo port assembly - for firmware updates and file transfer", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "ESD wrist strap", "size": "-", "required": true } + ], + "hardware": [ + { "name": "M2 screw", "spec": "M2x5", "qty": 2, "reusable": true }, + { "name": "USB cable", "spec": "4-wire shielded", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "M2 screws", "value": 0.2, "unit": "Nm", "sequence": "", "notes": "Light torque" } + ], + "notes": [ + "USB-C port supports data transfer only - not power delivery", + "USB-A port for thumb drives and firmware updates", + "Shield must be grounded for EMI compliance", + "Check port alignment before tightening" + ] + }, + "geometry": [ + { "type": "rect", "width": 45, "height": 18, "rx": 2, "fill": "#1a1a1a" }, + { "type": "rect", "width": 15, "height": 8, "offsetX": -10, "fill": "#404040" }, + { "type": "rect", "width": 12, "height": 5, "offsetX": -10, "fill": "#c0c0c0" }, + { "type": "rect", "width": 10, "height": 4, "offsetX": 12, "rx": 2, "fill": "#404040" }, + { "type": "rect", "width": 8, "height": 2.5, "offsetX": 12, "rx": 1, "fill": "#c0c0c0" } + ], + "geometry3d": [ + { "type": "box", "width": 40, "height": 12, "depth": 22, "fill": "#1a1a1a" }, + + { "type": "box", "width": 14, "height": 7, "depth": 18, "offsetX": -10, "offsetY": 2, "fill": "#c0c0c0" }, + { "type": "box", "width": 12, "height": 5, "depth": 20, "offsetX": -10, "offsetY": 2, "subtract": true }, + { "type": "box", "width": 10, "height": 2, "depth": 10, "offsetX": -10, "offsetY": 2, "offsetZ": -3, "fill": "#2060cc" }, + + { "type": "box", "width": 10, "height": 4, "depth": 10, "offsetX": 10, "offsetY": 3, "fill": "#c0c0c0" }, + { "type": "box", "width": 8.5, "height": 2.5, "depth": 12, "offsetX": 10, "offsetY": 3, "subtract": true }, + { "type": "box", "width": 6, "height": 1, "depth": 5, "offsetX": 10, "offsetY": 3, "offsetZ": -1, "fill": "#303030" }, + + { "type": "box", "width": 42, "height": 3, "depth": 24, "offsetY": -7.5, "fill": "#006030" }, + + { "type": "box", "width": 4, "height": 4, "depth": 4, "offsetX": -16, "offsetY": -5.5, "fill": "#1a1a1a" }, + { "type": "box", "width": 4, "height": 4, "depth": 4, "offsetX": 16, "offsetY": -5.5, "fill": "#1a1a1a" }, + + { "type": "box", "width": 35, "height": 2, "depth": 5, "offsetY": -10, "offsetZ": -8, "fill": "#c0c0c0" }, + + { "type": "cylinder", "r": 1, "height": 15, "offsetX": -18, "offsetY": 0, "offsetZ": -8, "fill": "#606060" }, + { "type": "cylinder", "r": 1, "height": 15, "offsetX": 18, "offsetY": 0, "offsetZ": -8, "fill": "#606060" }, + + { "type": "box", "width": 2, "height": 1, "depth": 2, "offsetX": 0, "offsetY": -5.5, "offsetZ": 8, "fill": "#00cc00" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wifi-module.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wifi-module.json new file mode 100644 index 000000000..c870b4d6d --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wifi-module.json @@ -0,0 +1,62 @@ +{ + "id": "wifi-module", + "name": "WiFi/Connectivity Module", + "partNumber": "BL-A1-WIFI1", + "material": "pcb", + "quantity": 1, + "weight": 12.0, + "weightUnit": "g", + "baseY": 220, + "description": "ESP32-based WiFi and Bluetooth module - dual-band 2.4/5GHz with PCB antenna", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "ESD wrist strap", "size": "-", "required": true }, + { "name": "Tweezers", "size": "Precision", "required": false } + ], + "hardware": [ + { "name": "M2 screw", "spec": "M2x4", "qty": 2, "reusable": true }, + { "name": "Flex cable", "spec": "6-pin 1.0mm pitch", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "M2 screws", "value": 0.2, "unit": "Nm", "sequence": "", "notes": "Very light torque" } + ], + "notes": [ + "WiFi credentials stored in module - backup before replacement", + "Antenna area must not be covered by metal", + "Keep away from stepper drivers to reduce interference", + "Firmware must be re-paired after replacement" + ] + }, + "geometry": [ + { "type": "rect", "width": 35, "height": 22, "rx": 1, "fill": "#006030" }, + { "type": "rect", "width": 12, "height": 12, "offsetX": -8, "offsetY": 0, "fill": "#303030" }, + { "type": "rect", "width": 8, "height": 3, "offsetX": 10, "offsetY": -6, "fill": "#c0c0c0" }, + { "type": "rect", "width": 6, "height": 8, "offsetX": 12, "offsetY": 4, "fill": "#006030" } + ], + "geometry3d": [ + { "type": "box", "width": 32, "height": 1.6, "depth": 18, "fill": "#006030" }, + + { "type": "box", "width": 10, "height": 2, "depth": 10, "offsetX": -8, "offsetY": 1.8, "offsetZ": 0, "fill": "#252530" }, + { "type": "box", "width": 8, "height": 0.8, "depth": 8, "offsetX": -8, "offsetY": 3, "offsetZ": 0, "fill": "#404045" }, + + { "type": "box", "width": 4, "height": 1.5, "depth": 4, "offsetX": 2, "offsetY": 1.55, "offsetZ": -4, "fill": "#1a1a1a" }, + { "type": "box", "width": 4, "height": 1.5, "depth": 4, "offsetX": 2, "offsetY": 1.55, "offsetZ": 4, "fill": "#1a1a1a" }, + + { "type": "cylinder", "r": 1.8, "height": 2.5, "offsetX": 8, "offsetY": 2.05, "offsetZ": -5, "fill": "#303030" }, + { "type": "cylinder", "r": 1.5, "height": 1.5, "offsetX": 8, "offsetY": 3, "offsetZ": -5, "fill": "#505050" }, + + { "type": "box", "width": 8, "height": 3, "depth": 6, "offsetX": 8, "offsetY": 2.3, "offsetZ": 4, "fill": "#c0c0c0" }, + { "type": "box", "width": 6, "height": 2, "depth": 4, "offsetX": 8, "offsetY": 2.3, "offsetZ": 5, "subtract": true }, + + { "type": "box", "width": 5, "height": 0.3, "depth": 12, "offsetX": 13, "offsetY": 0.95, "offsetZ": 0, "fill": "#c0a000" }, + { "type": "box", "width": 3, "height": 0.3, "depth": 3, "offsetX": 14, "offsetY": 0.95, "offsetZ": -6, "fill": "#c0a000" }, + { "type": "box", "width": 3, "height": 0.3, "depth": 3, "offsetX": 14, "offsetY": 0.95, "offsetZ": 6, "fill": "#c0a000" }, + + { "type": "cylinder", "r": 1, "height": 2, "offsetX": -14, "offsetY": 0, "offsetZ": -7, "fill": "#606060" }, + { "type": "cylinder", "r": 1, "height": 2, "offsetX": -14, "offsetY": 0, "offsetZ": 7, "fill": "#606060" }, + + { "type": "box", "width": 2, "height": 1, "depth": 1, "offsetX": -2, "offsetY": 1.3, "offsetZ": -7, "fill": "#00cc00" }, + { "type": "box", "width": 2, "height": 1, "depth": 1, "offsetX": -2, "offsetY": 1.3, "offsetZ": -5, "fill": "#0000cc" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wiring-harness.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wiring-harness.json new file mode 100644 index 000000000..3cb143434 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/electronics/parts/wiring-harness.json @@ -0,0 +1,84 @@ +{ + "id": "wiring-harness", + "name": "Main Cable Harness", + "partNumber": "BL-A1-WH001", + "material": "copper", + "quantity": 1, + "weight": 320.0, + "weightUnit": "g", + "baseY": 460, + "description": "Main wiring loom assembly - connects mainboard to all motors, sensors, and peripherals", + "installation": { + "tools": [ + { "name": "Plastic spudger", "size": "-", "required": true }, + { "name": "Cable ties", "size": "100mm", "required": true }, + { "name": "Wire loom tape", "size": "19mm", "required": false }, + { "name": "Multimeter", "size": "-", "required": true } + ], + "hardware": [ + { "name": "Cable clip", "spec": "Self-adhesive 10mm", "qty": 12, "reusable": false }, + { "name": "Spiral wrap", "spec": "6mm diameter", "qty": 1, "reusable": true }, + { "name": "JST-XH connector", "spec": "Various", "qty": 8, "reusable": true } + ], + "torque": [], + "notes": [ + "Photograph harness routing before removal", + "Label each connector before disconnecting", + "Do not kink or sharply bend cables", + "Keep away from heated components and moving parts", + "Check continuity on all wires after installation", + "Route cables through designated channels" + ] + }, + "geometry": [ + { "type": "rect", "width": 140, "height": 12, "rx": 6, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 35, "offsetX": -55, "offsetY": 18, "rx": 4, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 40, "offsetX": -35, "offsetY": 20, "rx": 4, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 30, "offsetX": -15, "offsetY": 15, "rx": 4, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 45, "offsetX": 5, "offsetY": 22, "rx": 4, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 35, "offsetX": 25, "offsetY": 18, "rx": 4, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 50, "offsetX": 45, "offsetY": 25, "rx": 4, "fill": "#1a1a1a" }, + { "type": "rect", "width": 8, "height": 25, "offsetX": 60, "offsetY": 12, "rx": 4, "fill": "#1a1a1a" }, + { "type": "rect", "width": 20, "height": 10, "offsetX": -55, "offsetY": 38, "rx": 2, "fill": "#ffffff" }, + { "type": "rect", "width": 20, "height": 10, "offsetX": 5, "offsetY": 48, "rx": 2, "fill": "#ffffff" }, + { "type": "rect", "width": 20, "height": 10, "offsetX": 45, "offsetY": 53, "rx": 2, "fill": "#ffcc00" } + ], + "geometry3d": [ + { "type": "box", "width": 120, "height": 10, "depth": 10, "fill": "#1a1a1a" }, + + { "type": "cylinder", "r": 4, "height": 30, "offsetX": -50, "offsetZ": 20, "fill": "#1a1a1a" }, + { "type": "cylinder", "r": 4, "height": 35, "offsetX": -30, "offsetZ": 25, "fill": "#1a1a1a" }, + { "type": "cylinder", "r": 4, "height": 25, "offsetX": -10, "offsetZ": 15, "fill": "#1a1a1a" }, + { "type": "cylinder", "r": 4, "height": 40, "offsetX": 10, "offsetZ": 28, "fill": "#1a1a1a" }, + { "type": "cylinder", "r": 4, "height": 30, "offsetX": 30, "offsetZ": 20, "fill": "#1a1a1a" }, + { "type": "cylinder", "r": 4, "height": 45, "offsetX": 50, "offsetZ": 30, "fill": "#1a1a1a" }, + + { "type": "box", "width": 18, "height": 6, "depth": 8, "offsetX": -50, "offsetZ": 38, "fill": "#ffffff" }, + { "type": "box", "width": 16, "height": 4, "depth": 5, "offsetX": -50, "offsetZ": 40, "subtract": true }, + + { "type": "box", "width": 18, "height": 6, "depth": 8, "offsetX": -30, "offsetZ": 46, "fill": "#ffffff" }, + { "type": "box", "width": 16, "height": 4, "depth": 5, "offsetX": -30, "offsetZ": 48, "subtract": true }, + + { "type": "box", "width": 14, "height": 5, "depth": 6, "offsetX": -10, "offsetZ": 30, "fill": "#ffffff" }, + { "type": "box", "width": 12, "height": 3, "depth": 4, "offsetX": -10, "offsetZ": 32, "subtract": true }, + + { "type": "box", "width": 22, "height": 8, "depth": 10, "offsetX": 10, "offsetZ": 52, "fill": "#ffffff" }, + { "type": "box", "width": 20, "height": 6, "depth": 7, "offsetX": 10, "offsetZ": 54, "subtract": true }, + + { "type": "box", "width": 18, "height": 6, "depth": 8, "offsetX": 30, "offsetZ": 38, "fill": "#ffcc00" }, + { "type": "box", "width": 16, "height": 4, "depth": 5, "offsetX": 30, "offsetZ": 40, "subtract": true }, + + { "type": "box", "width": 22, "height": 8, "depth": 10, "offsetX": 50, "offsetZ": 56, "fill": "#ffcc00" }, + { "type": "box", "width": 20, "height": 6, "depth": 7, "offsetX": 50, "offsetZ": 58, "subtract": true }, + + { "type": "cylinder", "r": 2, "height": 12, "offsetX": -55, "offsetZ": -10, "fill": "#cc0000" }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": -52, "offsetZ": -10, "fill": "#1a1a1a" }, + + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 55, "offsetZ": -10, "fill": "#ffcc00" }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 52, "offsetZ": -10, "fill": "#1a1a1a" }, + + { "type": "box", "width": 3, "height": 3, "depth": 3, "offsetX": -40, "offsetY": 3, "fill": "#404045" }, + { "type": "box", "width": 3, "height": 3, "depth": 3, "offsetX": 0, "offsetY": 3, "fill": "#404045" }, + { "type": "box", "width": 3, "height": 3, "depth": 3, "offsetX": 40, "offsetY": 3, "fill": "#404045" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/assembly.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/assembly.json new file mode 100644 index 000000000..8b8f05fdc --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/assembly.json @@ -0,0 +1,84 @@ +{ + "name": "Frame Assembly", + "description": "Bambu Lab A1 structural frame assembly - aluminum extrusion base with vertical columns, horizontal beam, motor mounts, and peripheral mounting points for LCD and spool holder", + "category": "3d-printers", + "manufacturer": "Bambu Lab", + "model": "A1", + "parts": [ + "base-frame", + "z-column-left", + "z-column-right", + "top-beam", + "z-motor-mount", + "spool-holder", + "footpad", + "lcd-mount" + ], + "assemblyOrder": [ + { + "step": 1, + "part": "footpad", + "description": "Install all four footpads to base frame corner mounting points", + "quantity": 4 + }, + { + "step": 2, + "part": "base-frame", + "description": "Position base frame on level surface, verify stability" + }, + { + "step": 3, + "part": "z-motor-mount", + "description": "Attach Z-motor mount to rear-right of base frame" + }, + { + "step": 4, + "part": "z-column-left", + "description": "Mount left Z-column to base frame, verify perpendicular" + }, + { + "step": 5, + "part": "z-column-right", + "description": "Mount right Z-column to base frame, verify parallel to left column" + }, + { + "step": 6, + "part": "top-beam", + "description": "Install top horizontal beam connecting both columns, verify level" + }, + { + "step": 7, + "part": "spool-holder", + "description": "Attach spool holder arm to rear of top beam" + }, + { + "step": 8, + "part": "lcd-mount", + "description": "Mount LCD bracket to front-left of base frame" + } + ], + "totalWeight": { + "value": 4130, + "unit": "g", + "note": "Includes 4x footpads at 28g each" + }, + "dimensions": { + "width": 280, + "depth": 240, + "height": 350, + "unit": "mm" + }, + "materials": [ + "aluminum", + "steel", + "plastic", + "rubber" + ], + "primaryColor": "#252525", + "notes": [ + "All aluminum extrusions are 2020 profile", + "Frame must be assembled on level surface", + "Verify squareness at each step before proceeding", + "Z-columns must be perfectly perpendicular for accurate prints" + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/base-frame.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/base-frame.json new file mode 100644 index 000000000..7f1eb8d8e --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/base-frame.json @@ -0,0 +1,86 @@ +{ + "id": "base-frame", + "name": "Base Frame", + "partNumber": "BL-A1-001", + "material": "aluminum", + "quantity": 1, + "weight": 1850.0, + "weightUnit": "g", + "baseY": 0, + "description": "Main aluminum extrusion base frame - provides structural foundation for entire printer assembly with integrated cable routing channels and mounting points for all major components", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Level", "size": "300mm", "required": true }, + { "name": "Soft mallet", "size": "-", "required": false } + ], + "hardware": [ + { "name": "Frame corner bracket", "spec": "20x20mm", "qty": 8, "reusable": true }, + { "name": "T-slot nut", "spec": "M4", "qty": 16, "reusable": true }, + { "name": "Socket head cap screw", "spec": "M4x8", "grade": "12.9", "qty": 16, "reusable": true }, + { "name": "Rubber bumper", "spec": "M4x10", "qty": 4, "reusable": true } + ], + "torque": [ + { "fastener": "Corner bracket screws", "value": 2.5, "unit": "Nm", "sequence": "Opposing corners first", "notes": "Do not overtighten - aluminum threads" }, + { "fastener": "T-slot nuts", "value": 2.0, "unit": "Nm", "sequence": "Slide in before tightening", "notes": "Ensure nut is fully seated in slot" } + ], + "notes": [ + "Base frame is the foundation - ensure perfect level before proceeding", + "Check all corner brackets for square alignment", + "Cable routing channels face inward", + "Footpad mounting holes are pre-threaded" + ] + }, + "geometry": [ + { "type": "rect", "width": 200, "height": 180, "rx": 4, "fill": "#252525" }, + { "type": "rect", "width": 180, "height": 160, "rx": 2, "fill": "#1a1a1a" }, + { "type": "rect", "width": 20, "height": 180, "offsetX": -90, "fill": "#303030" }, + { "type": "rect", "width": 20, "height": 180, "offsetX": 90, "fill": "#303030" }, + { "type": "rect", "width": 200, "height": 20, "offsetY": -80, "fill": "#303030" }, + { "type": "rect", "width": 200, "height": 20, "offsetY": 80, "fill": "#303030" }, + { "type": "circle", "r": 5, "offsetX": -85, "offsetY": -75, "fill": "#444" }, + { "type": "circle", "r": 5, "offsetX": 85, "offsetY": -75, "fill": "#444" }, + { "type": "circle", "r": 5, "offsetX": -85, "offsetY": 75, "fill": "#444" }, + { "type": "circle", "r": 5, "offsetX": 85, "offsetY": 75, "fill": "#444" } + ], + "geometry3d": [ + { "type": "box", "width": 280, "height": 20, "depth": 40, "offsetZ": -100, "fill": "#252525" }, + { "type": "box", "width": 280, "height": 20, "depth": 40, "offsetZ": 100, "fill": "#252525" }, + { "type": "box", "width": 40, "height": 20, "depth": 200, "offsetX": -120, "fill": "#252525" }, + { "type": "box", "width": 40, "height": 20, "depth": 200, "offsetX": 120, "fill": "#252525" }, + + { "type": "box", "width": 260, "height": 12, "depth": 20, "offsetZ": -100, "offsetY": 2, "fill": "#303030" }, + { "type": "box", "width": 260, "height": 12, "depth": 20, "offsetZ": 100, "offsetY": 2, "fill": "#303030" }, + { "type": "box", "width": 20, "height": 12, "depth": 180, "offsetX": -120, "offsetY": 2, "fill": "#303030" }, + { "type": "box", "width": 20, "height": 12, "depth": 180, "offsetX": 120, "offsetY": 2, "fill": "#303030" }, + + { "type": "box", "width": 8, "height": 8, "depth": 200, "offsetX": -120, "offsetY": -4, "subtract": true }, + { "type": "box", "width": 8, "height": 8, "depth": 200, "offsetX": 120, "offsetY": -4, "subtract": true }, + { "type": "box", "width": 280, "height": 8, "depth": 8, "offsetZ": -100, "offsetY": -4, "subtract": true }, + { "type": "box", "width": 280, "height": 8, "depth": 8, "offsetZ": 100, "offsetY": -4, "subtract": true }, + + { "type": "cylinder", "r": 3, "height": 25, "offsetX": -120, "offsetZ": -100, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 25, "offsetX": 120, "offsetZ": -100, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 25, "offsetX": -120, "offsetZ": 100, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 25, "offsetX": 120, "offsetZ": 100, "subtract": true }, + + { "type": "cylinder", "r": 6, "height": 8, "offsetX": -120, "offsetZ": -100, "offsetY": 8, "fill": "#404040" }, + { "type": "cylinder", "r": 6, "height": 8, "offsetX": 120, "offsetZ": -100, "offsetY": 8, "fill": "#404040" }, + { "type": "cylinder", "r": 6, "height": 8, "offsetX": -120, "offsetZ": 100, "offsetY": 8, "fill": "#404040" }, + { "type": "cylinder", "r": 6, "height": 8, "offsetX": 120, "offsetZ": 100, "offsetY": 8, "fill": "#404040" }, + + { "type": "box", "width": 60, "height": 6, "depth": 180, "offsetX": 0, "offsetY": 8, "fill": "#353535" }, + + { "type": "box", "width": 40, "height": 5, "depth": 30, "offsetX": -80, "offsetZ": -85, "offsetY": 9, "fill": "#404040" }, + { "type": "box", "width": 40, "height": 5, "depth": 30, "offsetX": 80, "offsetZ": -85, "offsetY": 9, "fill": "#404040" }, + + { "type": "cylinder", "r": 4, "height": 10, "offsetX": -80, "offsetZ": -85, "subtract": true }, + { "type": "cylinder", "r": 4, "height": 10, "offsetX": 80, "offsetZ": -85, "subtract": true }, + + { "type": "box", "width": 15, "height": 15, "depth": 15, "offsetX": -105, "offsetZ": -85, "fill": "#383838" }, + { "type": "box", "width": 15, "height": 15, "depth": 15, "offsetX": 105, "offsetZ": -85, "fill": "#383838" }, + { "type": "box", "width": 15, "height": 15, "depth": 15, "offsetX": -105, "offsetZ": 85, "fill": "#383838" }, + { "type": "box", "width": 15, "height": 15, "depth": 15, "offsetX": 105, "offsetZ": 85, "fill": "#383838" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/footpad.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/footpad.json new file mode 100644 index 000000000..652a6298b --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/footpad.json @@ -0,0 +1,69 @@ +{ + "id": "footpad", + "name": "Vibration Dampening Footpad", + "partNumber": "BL-A1-007", + "material": "rubber", + "quantity": 4, + "weight": 28.0, + "weightUnit": "g", + "baseY": -15, + "description": "Molded rubber vibration dampening footpad - absorbs high-frequency vibrations from stepper motors and rapid movements, features threaded steel insert for secure frame attachment and non-slip base texture", + "installation": { + "tools": [ + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Level", "size": "200mm", "required": true } + ], + "hardware": [ + { "name": "Footpad screw", "spec": "M4x12", "grade": "8.8", "qty": 1, "reusable": true }, + { "name": "Steel threaded insert", "spec": "M4", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Footpad screw", "value": 1.8, "unit": "Nm", "sequence": "Hand tight then quarter turn", "notes": "Rubber compresses - do not overtighten" } + ], + "notes": [ + "Install all four footpads before frame assembly", + "Use level to verify printer is stable on surface", + "Footpads may compress slightly during first weeks of use", + "Replace if rubber becomes hard or cracked" + ] + }, + "geometry": [ + { "type": "ellipse", "rx": 22, "ry": 18, "fill": "#252525" }, + { "type": "ellipse", "rx": 18, "ry": 14, "fill": "#303030" }, + { "type": "circle", "r": 5, "fill": "#404040" }, + { "type": "circle", "r": 3, "fill": "#555" } + ], + "geometry3d": [ + { "type": "cylinder", "r": 20, "height": 6, "offsetY": -8, "fill": "#252525" }, + + { "type": "cylinder", "r": 18, "height": 10, "offsetY": -2, "fill": "#303030" }, + + { "type": "cylinder", "r": 15, "height": 8, "offsetY": 6, "fill": "#353535" }, + + { "type": "cylinder", "r": 5, "height": 18, "fill": "#505050" }, + + { "type": "cylinder", "r": 2.5, "height": 22, "subtract": true }, + + { "type": "cylinder", "r": 4.5, "height": 6, "offsetY": 8, "fill": "#606060" }, + + { "type": "cylinder", "r": 22, "height": 2, "offsetY": -12, "fill": "#1a1a1a" }, + + { "type": "box", "width": 40, "height": 1, "depth": 3, "offsetY": -12, "fill": "#2a2a2a" }, + { "type": "box", "width": 3, "height": 1, "depth": 40, "offsetY": -12, "fill": "#2a2a2a" }, + { "type": "box", "width": 30, "height": 1, "depth": 3, "offsetY": -12, "offsetZ": 8, "fill": "#2a2a2a" }, + { "type": "box", "width": 30, "height": 1, "depth": 3, "offsetY": -12, "offsetZ": -8, "fill": "#2a2a2a" }, + { "type": "box", "width": 3, "height": 1, "depth": 30, "offsetY": -12, "offsetX": 8, "fill": "#2a2a2a" }, + { "type": "box", "width": 3, "height": 1, "depth": 30, "offsetY": -12, "offsetX": -8, "fill": "#2a2a2a" }, + + { "type": "cylinder", "r": 17, "height": 3, "offsetY": -5, "fill": "#282828" }, + { "type": "cylinder", "r": 14, "height": 4, "offsetY": -5, "fill": "#303030" }, + + { "type": "box", "width": 2, "height": 14, "depth": 2, "offsetX": 12, "offsetZ": 0, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 14, "depth": 2, "offsetX": -12, "offsetZ": 0, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 14, "depth": 2, "offsetX": 0, "offsetZ": 12, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 14, "depth": 2, "offsetX": 0, "offsetZ": -12, "fill": "#404040" }, + + { "type": "cylinder", "r": 8, "height": 4, "offsetY": 10, "fill": "#454545" }, + { "type": "cylinder", "r": 6, "height": 2, "offsetY": 13, "fill": "#555555" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/lcd-mount.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/lcd-mount.json new file mode 100644 index 000000000..bec03e165 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/lcd-mount.json @@ -0,0 +1,83 @@ +{ + "id": "lcd-mount", + "name": "LCD Display Mount", + "partNumber": "BL-A1-008", + "material": "plastic", + "quantity": 1, + "weight": 42.0, + "weightUnit": "g", + "baseY": 50, + "description": "Injection molded LCD display mounting bracket - positions the touchscreen display at optimal viewing angle, features snap-fit cable routing and integrated tilt adjustment mechanism", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "Phillips screwdriver", "size": "#1", "required": true }, + { "name": "Plastic spudger", "size": "-", "required": false } + ], + "hardware": [ + { "name": "Display screw", "spec": "M3x6", "grade": "8.8", "qty": 4, "reusable": true }, + { "name": "Mount bracket screw", "spec": "M4x10", "grade": "8.8", "qty": 2, "reusable": true }, + { "name": "T-slot nut", "spec": "M4", "qty": 2, "reusable": true }, + { "name": "FFC ribbon cable", "spec": "24-pin 100mm", "qty": 1, "reusable": false } + ], + "torque": [ + { "fastener": "Display screws", "value": 0.4, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "Very light torque - LCD can crack" }, + { "fastener": "Mount bracket screws", "value": 1.5, "unit": "Nm", "sequence": "Both evenly", "notes": "Allows angle adjustment" } + ], + "notes": [ + "Handle LCD with care - static sensitive", + "Route ribbon cable before securing display", + "Tilt angle adjustable 15-45 degrees", + "Cable connector is delicate - align carefully" + ] + }, + "geometry": [ + { "type": "rect", "width": 90, "height": 60, "rx": 4, "fill": "#303030" }, + { "type": "rect", "width": 80, "height": 50, "rx": 2, "fill": "#1a1a1a" }, + { "type": "rect", "width": 20, "height": 25, "offsetY": 35, "fill": "#353535" }, + { "type": "circle", "r": 3, "offsetX": -38, "offsetY": -22, "fill": "#444" }, + { "type": "circle", "r": 3, "offsetX": 38, "offsetY": -22, "fill": "#444" }, + { "type": "circle", "r": 3, "offsetX": -38, "offsetY": 22, "fill": "#444" }, + { "type": "circle", "r": 3, "offsetX": 38, "offsetY": 22, "fill": "#444" } + ], + "geometry3d": [ + { "type": "box", "width": 90, "height": 60, "depth": 6, "fill": "#303030" }, + + { "type": "box", "width": 82, "height": 52, "depth": 3, "offsetZ": 2, "fill": "#1a1a1a" }, + + { "type": "box", "width": 95, "height": 8, "depth": 10, "offsetY": -28, "fill": "#353535" }, + { "type": "box", "width": 95, "height": 8, "depth": 10, "offsetY": 28, "fill": "#353535" }, + + { "type": "cylinder", "r": 2, "height": 12, "offsetX": -40, "offsetY": -24, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": 40, "offsetY": -24, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": -40, "offsetY": 24, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": 40, "offsetY": 24, "rotateX": 90, "subtract": true }, + + { "type": "cylinder", "r": 4, "height": 3, "offsetX": -40, "offsetY": -24, "offsetZ": 3, "fill": "#505050" }, + { "type": "cylinder", "r": 4, "height": 3, "offsetX": 40, "offsetY": -24, "offsetZ": 3, "fill": "#505050" }, + { "type": "cylinder", "r": 4, "height": 3, "offsetX": -40, "offsetY": 24, "offsetZ": 3, "fill": "#505050" }, + { "type": "cylinder", "r": 4, "height": 3, "offsetX": 40, "offsetY": 24, "offsetZ": 3, "fill": "#505050" }, + + { "type": "box", "width": 20, "height": 40, "depth": 8, "offsetY": 45, "fill": "#353535" }, + + { "type": "box", "width": 8, "height": 12, "depth": 25, "offsetY": 60, "fill": "#404040" }, + + { "type": "cylinder", "r": 2.5, "height": 25, "offsetY": 60, "rotateZ": 90, "subtract": true }, + + { "type": "cylinder", "r": 5, "height": 10, "offsetY": 55, "offsetX": -6, "rotateZ": 90, "fill": "#505050" }, + { "type": "cylinder", "r": 5, "height": 10, "offsetY": 55, "offsetX": 6, "rotateZ": 90, "fill": "#505050" }, + + { "type": "box", "width": 30, "height": 8, "depth": 4, "offsetY": 32, "offsetZ": -3, "fill": "#2a2a2a" }, + { "type": "box", "width": 24, "height": 5, "depth": 6, "offsetY": 32, "offsetZ": -3, "subtract": true }, + + { "type": "box", "width": 4, "height": 55, "depth": 8, "offsetX": -43, "fill": "#383838" }, + { "type": "box", "width": 4, "height": 55, "depth": 8, "offsetX": 43, "fill": "#383838" }, + + { "type": "box", "width": 50, "height": 3, "depth": 4, "offsetY": -35, "offsetZ": 1, "fill": "#454545" }, + { "type": "box", "width": 35, "height": 2, "depth": 2, "offsetY": -35, "offsetZ": 1, "subtract": true }, + + { "type": "box", "width": 12, "height": 6, "depth": 3, "offsetX": 35, "offsetY": 0, "offsetZ": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 1.5, "height": 8, "offsetX": 35, "offsetY": 2, "offsetZ": -4, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 8, "offsetX": 35, "offsetY": -2, "offsetZ": -4, "rotateX": 90, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/spool-holder.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/spool-holder.json new file mode 100644 index 000000000..e40af4034 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/spool-holder.json @@ -0,0 +1,73 @@ +{ + "id": "spool-holder", + "name": "Filament Spool Holder", + "partNumber": "BL-A1-006", + "material": "plastic", + "quantity": 1, + "weight": 85.0, + "weightUnit": "g", + "baseY": 220, + "description": "Injection molded filament spool holder arm - mounts to top beam rear, supports standard 1kg spools up to 200mm diameter with integrated runout sensor mount and smooth roller bearings", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Phillips screwdriver", "size": "#1", "required": true } + ], + "hardware": [ + { "name": "Mounting screw", "spec": "M4x12", "grade": "8.8", "qty": 2, "reusable": true }, + { "name": "T-slot nut", "spec": "M4", "qty": 2, "reusable": true }, + { "name": "Roller bearing", "spec": "608ZZ", "qty": 2, "reusable": true }, + { "name": "Bearing spacer", "spec": "8x12x5mm", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Mounting screws", "value": 1.5, "unit": "Nm", "sequence": "Both screws evenly", "notes": "Plastic threads - do not overtighten" } + ], + "notes": [ + "Supports spools up to 1kg standard size", + "Roller bearings allow smooth spool rotation", + "Position with filament path clear to extruder", + "Runout sensor mounts on inner arm face" + ] + }, + "geometry": [ + { "type": "rect", "width": 25, "height": 80, "rx": 3, "fill": "#303030" }, + { "type": "rect", "width": 100, "height": 15, "offsetY": -30, "rx": 4, "fill": "#353535" }, + { "type": "circle", "r": 8, "offsetX": -35, "offsetY": -30, "fill": "#252525" }, + { "type": "circle", "r": 8, "offsetX": 40, "offsetY": -30, "fill": "#252525" }, + { "type": "circle", "r": 4, "offsetY": 30, "fill": "#444" }, + { "type": "circle", "r": 4, "offsetY": 15, "fill": "#444" } + ], + "geometry3d": [ + { "type": "box", "width": 25, "height": 15, "depth": 30, "offsetY": 0, "fill": "#303030" }, + + { "type": "box", "width": 120, "height": 12, "depth": 20, "offsetX": 50, "offsetY": 0, "fill": "#353535" }, + + { "type": "cylinder", "r": 10, "height": 25, "offsetX": 100, "rotateZ": 90, "fill": "#404040" }, + { "type": "cylinder", "r": 5, "height": 30, "offsetX": 100, "rotateZ": 90, "subtract": true }, + + { "type": "cylinder", "r": 8, "height": 8, "offsetX": 100, "offsetY": 10, "rotateZ": 90, "fill": "#606060" }, + { "type": "cylinder", "r": 8, "height": 8, "offsetX": 100, "offsetY": -10, "rotateZ": 90, "fill": "#606060" }, + { "type": "cylinder", "r": 4, "height": 10, "offsetX": 100, "offsetY": 10, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 4, "height": 10, "offsetX": 100, "offsetY": -10, "rotateZ": 90, "subtract": true }, + + { "type": "box", "width": 8, "height": 40, "depth": 25, "offsetX": 0, "offsetY": 25, "fill": "#383838" }, + + { "type": "cylinder", "r": 2.5, "height": 20, "offsetX": 0, "offsetY": 35, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 2.5, "height": 20, "offsetX": 0, "offsetY": 20, "rotateX": 90, "subtract": true }, + + { "type": "box", "width": 20, "height": 8, "depth": 15, "offsetX": 25, "offsetY": 4, "fill": "#404040" }, + { "type": "box", "width": 15, "height": 10, "depth": 10, "offsetX": 25, "offsetY": 4, "subtract": true }, + + { "type": "cylinder", "r": 6, "height": 30, "offsetX": 15, "rotateZ": 90, "fill": "#2a2a2a" }, + + { "type": "box", "width": 15, "height": 6, "depth": 12, "offsetX": 60, "offsetY": 8, "fill": "#505050" }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": 55, "offsetY": 8, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": 65, "offsetY": 8, "subtract": true }, + + { "type": "box", "width": 6, "height": 18, "depth": 10, "offsetX": 110, "offsetY": 0, "fill": "#454545" }, + + { "type": "box", "width": 100, "height": 3, "depth": 15, "offsetX": 50, "offsetY": -6, "fill": "#252525" }, + + { "type": "cylinder", "r": 3, "height": 14, "offsetX": 80, "rotateZ": 90, "fill": "#505050" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/top-beam.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/top-beam.json new file mode 100644 index 000000000..677bfd350 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/top-beam.json @@ -0,0 +1,76 @@ +{ + "id": "top-beam", + "name": "Top Horizontal Beam", + "partNumber": "BL-A1-004", + "material": "aluminum", + "quantity": 1, + "weight": 420.0, + "weightUnit": "g", + "baseY": 200, + "description": "Top horizontal aluminum extrusion beam connecting left and right Z-columns - provides gantry stability, supports X-axis components, and houses the spool holder mounting point", + "installation": { + "tools": [ + { "name": "Hex key", "size": "4mm", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Spirit level", "size": "200mm", "required": true }, + { "name": "Measuring tape", "size": "1m", "required": true } + ], + "hardware": [ + { "name": "Beam mounting bolt", "spec": "M5x20", "grade": "12.9", "qty": 4, "reusable": true }, + { "name": "T-slot nut", "spec": "M5", "qty": 4, "reusable": true }, + { "name": "Corner gusset plate", "spec": "40x40mm", "qty": 2, "reusable": true }, + { "name": "Spool holder bracket screw", "spec": "M4x12", "qty": 2, "reusable": true } + ], + "torque": [ + { "fastener": "Beam mounting bolts", "value": 4.5, "unit": "Nm", "sequence": "Hand tight, then final torque both sides", "notes": "Verify beam is level before final torque" }, + { "fastener": "Corner gusset bolts", "value": 3.5, "unit": "Nm", "sequence": "Gusset adds rigidity", "notes": "Install after main beam is secured" } + ], + "notes": [ + "Beam must be perfectly level for consistent Z-height", + "Install corner gussets for additional rigidity", + "Spool holder mounts to rear center of beam", + "Route any wiring through top channel before closing" + ] + }, + "geometry": [ + { "type": "rect", "width": 180, "height": 30, "rx": 2, "fill": "#252525" }, + { "type": "rect", "width": 170, "height": 6, "offsetY": -8, "fill": "#303030" }, + { "type": "rect", "width": 170, "height": 6, "offsetY": 8, "fill": "#303030" }, + { "type": "circle", "r": 4, "offsetX": -80, "offsetY": 0, "fill": "#444" }, + { "type": "circle", "r": 4, "offsetX": 80, "offsetY": 0, "fill": "#444" }, + { "type": "rect", "width": 20, "height": 12, "offsetX": 0, "offsetY": 0, "fill": "#404040" } + ], + "geometry3d": [ + { "type": "box", "width": 260, "height": 30, "depth": 30, "fill": "#252525" }, + + { "type": "box", "width": 240, "height": 8, "depth": 8, "subtract": true }, + + { "type": "box", "width": 250, "height": 6, "depth": 12, "offsetY": 10, "fill": "#303030" }, + { "type": "box", "width": 250, "height": 6, "depth": 12, "offsetY": -10, "fill": "#303030" }, + + { "type": "box", "width": 32, "height": 32, "depth": 32, "offsetX": -125, "fill": "#353535" }, + { "type": "box", "width": 32, "height": 32, "depth": 32, "offsetX": 125, "fill": "#353535" }, + + { "type": "cylinder", "r": 3.5, "height": 40, "offsetX": -125, "offsetY": 8, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 40, "offsetX": -125, "offsetY": -8, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 40, "offsetX": 125, "offsetY": 8, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 40, "offsetX": 125, "offsetY": -8, "rotateZ": 90, "subtract": true }, + + { "type": "box", "width": 30, "height": 10, "depth": 20, "offsetX": 0, "offsetY": 18, "offsetZ": -10, "fill": "#404040" }, + { "type": "cylinder", "r": 2.5, "height": 15, "offsetX": -8, "offsetY": 18, "offsetZ": -10, "subtract": true }, + { "type": "cylinder", "r": 2.5, "height": 15, "offsetX": 8, "offsetY": 18, "offsetZ": -10, "subtract": true }, + + { "type": "cylinder", "r": 2, "height": 35, "offsetX": -60, "offsetZ": 0, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 35, "offsetX": -30, "offsetZ": 0, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 35, "offsetX": 30, "offsetZ": 0, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 35, "offsetX": 60, "offsetZ": 0, "rotateZ": 90, "subtract": true }, + + { "type": "box", "width": 240, "height": 4, "depth": 6, "offsetY": -13, "offsetZ": 8, "fill": "#383838" }, + + { "type": "box", "width": 8, "height": 20, "depth": 4, "offsetX": -100, "offsetY": 5, "offsetZ": 15, "fill": "#505050" }, + { "type": "box", "width": 8, "height": 20, "depth": 4, "offsetX": 100, "offsetY": 5, "offsetZ": 15, "fill": "#505050" }, + + { "type": "box", "width": 50, "height": 8, "depth": 35, "offsetX": 0, "offsetY": -17, "offsetZ": 0, "fill": "#2a2a2a" }, + { "type": "cylinder", "r": 4, "height": 40, "offsetX": 0, "offsetY": -17, "offsetZ": 0, "rotateX": 90, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-left.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-left.json new file mode 100644 index 000000000..8fedd357e --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-left.json @@ -0,0 +1,77 @@ +{ + "id": "z-column-left", + "name": "Z-Axis Column Left", + "partNumber": "BL-A1-002", + "material": "aluminum", + "quantity": 1, + "weight": 680.0, + "weightUnit": "g", + "baseY": 80, + "description": "Left vertical aluminum extrusion column - supports Z-axis linear rail and provides structural rigidity for the gantry system with integrated cable management channels", + "installation": { + "tools": [ + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Hex key", "size": "4mm", "required": true }, + { "name": "Square", "size": "150mm", "required": true }, + { "name": "Torque driver", "size": "0.5-6 Nm", "required": true } + ], + "hardware": [ + { "name": "Column mounting bolt", "spec": "M5x16", "grade": "12.9", "qty": 4, "reusable": true }, + { "name": "T-slot nut", "spec": "M5", "qty": 4, "reusable": true }, + { "name": "Alignment dowel", "spec": "4x8mm", "qty": 2, "reusable": true }, + { "name": "Linear rail", "spec": "MGN12H-300", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Column mounting bolts", "value": 4.5, "unit": "Nm", "sequence": "Bottom pair first, then top", "notes": "Verify perpendicular to base before final torque" }, + { "fastener": "Linear rail screws", "value": 1.2, "unit": "Nm", "sequence": "Center outward", "notes": "Rail must be parallel to column edge" } + ], + "notes": [ + "Verify column is perfectly perpendicular to base frame", + "Install linear rail before mounting column", + "Left and right columns are mirror images - check orientation", + "Cable channel faces inward toward print area" + ] + }, + "geometry": [ + { "type": "rect", "width": 35, "height": 140, "rx": 2, "fill": "#252525" }, + { "type": "rect", "width": 8, "height": 130, "offsetX": -10, "fill": "#303030" }, + { "type": "rect", "width": 25, "height": 8, "offsetX": 2, "offsetY": -60, "fill": "#353535" }, + { "type": "rect", "width": 25, "height": 8, "offsetX": 2, "offsetY": 60, "fill": "#353535" }, + { "type": "circle", "r": 3, "offsetX": 8, "offsetY": -55, "fill": "#444" }, + { "type": "circle", "r": 3, "offsetX": 8, "offsetY": 55, "fill": "#444" }, + { "type": "rect", "width": 6, "height": 100, "offsetX": 12, "fill": "#505050" } + ], + "geometry3d": [ + { "type": "box", "width": 40, "height": 300, "depth": 40, "fill": "#252525" }, + + { "type": "box", "width": 8, "height": 280, "depth": 8, "offsetY": 0, "subtract": true }, + + { "type": "box", "width": 10, "height": 290, "depth": 20, "offsetX": -12, "fill": "#303030" }, + + { "type": "box", "width": 42, "height": 15, "depth": 42, "offsetY": -145, "fill": "#353535" }, + { "type": "box", "width": 42, "height": 15, "depth": 42, "offsetY": 145, "fill": "#353535" }, + + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": 12, "offsetY": -140, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": -12, "offsetY": -140, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": 12, "offsetY": 140, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": -12, "offsetY": 140, "rotateX": 90, "subtract": true }, + + { "type": "box", "width": 8, "height": 260, "depth": 3, "offsetX": 18, "fill": "#606060" }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": 18, "offsetY": -120, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": 18, "offsetY": -80, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": 18, "offsetY": -40, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": 18, "offsetY": 0, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": 18, "offsetY": 40, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": 18, "offsetY": 80, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": 18, "offsetY": 120, "rotateZ": 90, "subtract": true }, + + { "type": "box", "width": 6, "height": 280, "depth": 10, "offsetX": -18, "offsetZ": 10, "fill": "#383838" }, + { "type": "box", "width": 4, "height": 270, "depth": 6, "offsetX": -18, "offsetZ": 10, "subtract": true }, + + { "type": "box", "width": 20, "height": 12, "depth": 8, "offsetX": 5, "offsetY": 135, "offsetZ": 18, "fill": "#404040" }, + { "type": "cylinder", "r": 2.5, "height": 15, "offsetX": 5, "offsetY": 135, "offsetZ": 18, "subtract": true }, + + { "type": "cylinder", "r": 4, "height": 8, "offsetX": 0, "offsetY": -148, "fill": "#505050" }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 0, "offsetY": -148, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-right.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-right.json new file mode 100644 index 000000000..565e17ced --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-column-right.json @@ -0,0 +1,80 @@ +{ + "id": "z-column-right", + "name": "Z-Axis Column Right", + "partNumber": "BL-A1-003", + "material": "aluminum", + "quantity": 1, + "weight": 680.0, + "weightUnit": "g", + "baseY": 80, + "description": "Right vertical aluminum extrusion column - mirrors left column, supports Z-axis linear rail and houses the Z-motor mounting interface with integrated cable routing", + "installation": { + "tools": [ + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Hex key", "size": "4mm", "required": true }, + { "name": "Square", "size": "150mm", "required": true }, + { "name": "Torque driver", "size": "0.5-6 Nm", "required": true } + ], + "hardware": [ + { "name": "Column mounting bolt", "spec": "M5x16", "grade": "12.9", "qty": 4, "reusable": true }, + { "name": "T-slot nut", "spec": "M5", "qty": 4, "reusable": true }, + { "name": "Alignment dowel", "spec": "4x8mm", "qty": 2, "reusable": true }, + { "name": "Linear rail", "spec": "MGN12H-300", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Column mounting bolts", "value": 4.5, "unit": "Nm", "sequence": "Bottom pair first, then top", "notes": "Verify perpendicular to base before final torque" }, + { "fastener": "Linear rail screws", "value": 1.2, "unit": "Nm", "sequence": "Center outward", "notes": "Rail must be parallel to column edge" } + ], + "notes": [ + "Mirror image of left column - verify correct orientation", + "Z-motor mount interfaces at base of this column", + "Ensure equal spacing from both columns to center", + "Verify both columns are parallel before proceeding" + ] + }, + "geometry": [ + { "type": "rect", "width": 35, "height": 140, "rx": 2, "fill": "#252525" }, + { "type": "rect", "width": 8, "height": 130, "offsetX": 10, "fill": "#303030" }, + { "type": "rect", "width": 25, "height": 8, "offsetX": -2, "offsetY": -60, "fill": "#353535" }, + { "type": "rect", "width": 25, "height": 8, "offsetX": -2, "offsetY": 60, "fill": "#353535" }, + { "type": "circle", "r": 3, "offsetX": -8, "offsetY": -55, "fill": "#444" }, + { "type": "circle", "r": 3, "offsetX": -8, "offsetY": 55, "fill": "#444" }, + { "type": "rect", "width": 6, "height": 100, "offsetX": -12, "fill": "#505050" } + ], + "geometry3d": [ + { "type": "box", "width": 40, "height": 300, "depth": 40, "fill": "#252525" }, + + { "type": "box", "width": 8, "height": 280, "depth": 8, "offsetY": 0, "subtract": true }, + + { "type": "box", "width": 10, "height": 290, "depth": 20, "offsetX": 12, "fill": "#303030" }, + + { "type": "box", "width": 42, "height": 15, "depth": 42, "offsetY": -145, "fill": "#353535" }, + { "type": "box", "width": 42, "height": 15, "depth": 42, "offsetY": 145, "fill": "#353535" }, + + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": 12, "offsetY": -140, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": -12, "offsetY": -140, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": 12, "offsetY": 140, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 3.5, "height": 50, "offsetX": -12, "offsetY": 140, "rotateX": 90, "subtract": true }, + + { "type": "box", "width": 8, "height": 260, "depth": 3, "offsetX": -18, "fill": "#606060" }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -18, "offsetY": -120, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -18, "offsetY": -80, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -18, "offsetY": -40, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -18, "offsetY": 0, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -18, "offsetY": 40, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -18, "offsetY": 80, "rotateZ": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -18, "offsetY": 120, "rotateZ": 90, "subtract": true }, + + { "type": "box", "width": 6, "height": 280, "depth": 10, "offsetX": 18, "offsetZ": 10, "fill": "#383838" }, + { "type": "box", "width": 4, "height": 270, "depth": 6, "offsetX": 18, "offsetZ": 10, "subtract": true }, + + { "type": "box", "width": 20, "height": 12, "depth": 8, "offsetX": -5, "offsetY": 135, "offsetZ": 18, "fill": "#404040" }, + { "type": "cylinder", "r": 2.5, "height": 15, "offsetX": -5, "offsetY": 135, "offsetZ": 18, "subtract": true }, + + { "type": "cylinder", "r": 4, "height": 8, "offsetX": 0, "offsetY": -148, "fill": "#505050" }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 0, "offsetY": -148, "subtract": true }, + + { "type": "box", "width": 25, "height": 40, "depth": 20, "offsetX": 8, "offsetY": -125, "offsetZ": -25, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 25, "offsetX": 8, "offsetY": -125, "offsetZ": -25, "rotateX": 90, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-motor-mount.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-motor-mount.json new file mode 100644 index 000000000..27a546f26 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/frame/parts/z-motor-mount.json @@ -0,0 +1,77 @@ +{ + "id": "z-motor-mount", + "name": "Z-Axis Motor Mount", + "partNumber": "BL-A1-005", + "material": "steel", + "quantity": 1, + "weight": 145.0, + "weightUnit": "g", + "baseY": 35, + "description": "Stamped steel Z-axis motor mounting bracket - precisely positions the Z stepper motor for belt-driven bed movement with integrated tensioner slot and anti-vibration mounting points", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Phillips screwdriver", "size": "#2", "required": true }, + { "name": "Belt tension gauge", "size": "-", "required": false } + ], + "hardware": [ + { "name": "Motor mount bolt", "spec": "M3x8", "grade": "12.9", "qty": 4, "reusable": true }, + { "name": "Frame mounting bolt", "spec": "M4x10", "grade": "12.9", "qty": 3, "reusable": true }, + { "name": "T-slot nut", "spec": "M4", "qty": 3, "reusable": true }, + { "name": "Vibration damper", "spec": "M3 silicone", "qty": 4, "reusable": false }, + { "name": "Belt tensioner screw", "spec": "M4x16", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Motor screws", "value": 0.8, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "Use vibration dampers under motor" }, + { "fastener": "Frame mount bolts", "value": 2.5, "unit": "Nm", "sequence": "Center bolt first", "notes": "Bracket should have slight float for alignment" } + ], + "notes": [ + "Install vibration dampers to reduce motor noise", + "Tensioner slot allows belt adjustment", + "Motor shaft must align with belt path", + "Check motor clearance from base frame" + ] + }, + "geometry": [ + { "type": "rect", "width": 70, "height": 55, "rx": 3, "fill": "#353535" }, + { "type": "circle", "r": 12, "offsetX": -10, "offsetY": 0, "fill": "#252525" }, + { "type": "circle", "r": 4, "offsetX": -30, "offsetY": -18, "fill": "#444" }, + { "type": "circle", "r": 4, "offsetX": 10, "offsetY": -18, "fill": "#444" }, + { "type": "circle", "r": 4, "offsetX": -30, "offsetY": 18, "fill": "#444" }, + { "type": "circle", "r": 4, "offsetX": 10, "offsetY": 18, "fill": "#444" }, + { "type": "rect", "width": 8, "height": 20, "offsetX": 28, "fill": "#303030" } + ], + "geometry3d": [ + { "type": "box", "width": 60, "height": 8, "depth": 50, "fill": "#353535" }, + + { "type": "box", "width": 45, "height": 45, "depth": 8, "offsetX": -5, "offsetZ": -25, "fill": "#404040" }, + + { "type": "cylinder", "r": 12, "height": 50, "offsetX": -5, "offsetZ": -25, "rotateX": 90, "subtract": true }, + + { "type": "cylinder", "r": 2, "height": 15, "offsetX": -20, "offsetY": -18, "offsetZ": -25, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 10, "offsetY": -18, "offsetZ": -25, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": -20, "offsetY": 18, "offsetZ": -25, "rotateX": 90, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 10, "offsetY": 18, "offsetZ": -25, "rotateX": 90, "subtract": true }, + + { "type": "cylinder", "r": 4, "height": 12, "offsetX": -20, "offsetY": -18, "offsetZ": -22, "rotateX": 90, "fill": "#505050" }, + { "type": "cylinder", "r": 4, "height": 12, "offsetX": 10, "offsetY": -18, "offsetZ": -22, "rotateX": 90, "fill": "#505050" }, + { "type": "cylinder", "r": 4, "height": 12, "offsetX": -20, "offsetY": 18, "offsetZ": -22, "rotateX": 90, "fill": "#505050" }, + { "type": "cylinder", "r": 4, "height": 12, "offsetX": 10, "offsetY": 18, "offsetZ": -22, "rotateX": 90, "fill": "#505050" }, + + { "type": "box", "width": 15, "height": 8, "depth": 30, "offsetX": 25, "fill": "#383838" }, + { "type": "box", "width": 6, "height": 12, "depth": 18, "offsetX": 25, "subtract": true }, + + { "type": "cylinder", "r": 2.5, "height": 12, "offsetX": -25, "offsetZ": 0, "subtract": true }, + { "type": "cylinder", "r": 2.5, "height": 12, "offsetX": -25, "offsetZ": 15, "subtract": true }, + { "type": "cylinder", "r": 2.5, "height": 12, "offsetX": 20, "offsetZ": 15, "subtract": true }, + + { "type": "box", "width": 12, "height": 35, "depth": 6, "offsetX": -28, "offsetZ": 0, "fill": "#404040" }, + + { "type": "box", "width": 62, "height": 4, "depth": 52, "offsetY": -4, "fill": "#303030" }, + { "type": "box", "width": 55, "height": 6, "depth": 45, "offsetY": -4, "subtract": true }, + + { "type": "box", "width": 8, "height": 12, "depth": 8, "offsetX": 28, "offsetY": 6, "offsetZ": -5, "fill": "#454545" }, + { "type": "cylinder", "r": 2.5, "height": 15, "offsetX": 28, "offsetZ": -5, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/assembly.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/assembly.json new file mode 100644 index 000000000..948ecaa3c --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/assembly.json @@ -0,0 +1,17 @@ +{ + "id": "heatbed", + "name": "Heatbed Assembly", + "description": "Bambu Lab A1 256x256mm heated bed assembly with PEI build surface, silicone heater, and Y-axis carriage", + "category": "Print Bed", + "version": "1.0.0", + "parts": [ + "y-carriage", + "bed-mount", + "bed-insulation", + "bed-heater", + "bed-thermistor", + "heatbed-plate", + "build-surface", + "purge-wiper" + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-heater.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-heater.json new file mode 100644 index 000000000..6762443be --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-heater.json @@ -0,0 +1,71 @@ +{ + "id": "bed-heater", + "name": "Silicone Bed Heater", + "partNumber": "BL-A1-HTR-001", + "material": "silicone", + "quantity": 1, + "weight": 220.0, + "weightUnit": "g", + "baseY": -30, + "description": "256x256mm 350W silicone heating pad with integrated NTC thermistor and thermal fuse - AC powered", + "installation": { + "tools": [ + { "name": "Isopropyl alcohol", "size": "99%", "required": true }, + { "name": "Heat gun", "size": "-", "required": false }, + { "name": "Roller", "size": "rubber", "required": true }, + { "name": "Multimeter", "size": "-", "required": true } + ], + "hardware": [ + { "name": "3M VHB tape", "spec": "5952", "qty": 1, "reusable": false }, + { "name": "Thermal fuse", "spec": "130C 10A", "qty": 1, "reusable": false }, + { "name": "Wire connector", "spec": "XT60", "qty": 1, "reusable": true } + ], + "torque": [], + "notes": [ + "DANGER: AC voltage present - disconnect power before servicing", + "Test heater resistance before installation (expect ~35-40 ohms)", + "Clean aluminum plate with IPA before applying heater", + "Press firmly and roll to remove air bubbles", + "Verify thermal fuse continuity after installation", + "Do not exceed 110C operating temperature" + ] + }, + "geometry": [ + { "type": "rect", "width": 170, "height": 170, "rx": 3, "fill": "#e05000" }, + { "type": "rect", "width": 160, "height": 160, "rx": 2, "fill": "#c04000" }, + { "type": "line", "x1": -70, "y1": -60, "x2": 70, "y2": -60, "stroke": "#d06000", "strokeWidth": 2 }, + { "type": "line", "x1": -70, "y1": -30, "x2": 70, "y2": -30, "stroke": "#d06000", "strokeWidth": 2 }, + { "type": "line", "x1": -70, "y1": 0, "x2": 70, "y2": 0, "stroke": "#d06000", "strokeWidth": 2 }, + { "type": "line", "x1": -70, "y1": 30, "x2": 70, "y2": 30, "stroke": "#d06000", "strokeWidth": 2 }, + { "type": "line", "x1": -70, "y1": 60, "x2": 70, "y2": 60, "stroke": "#d06000", "strokeWidth": 2 }, + { "type": "rect", "width": 30, "height": 20, "offsetX": -60, "offsetY": 70, "fill": "#333" } + ], + "geometry3d": [ + { "type": "box", "width": 256, "height": 2, "depth": 256, "fill": "#e05000" }, + { "type": "box", "width": 250, "height": 1.5, "depth": 250, "offsetY": 0.25, "fill": "#c04000" }, + + { "type": "box", "width": 240, "height": 0.5, "depth": 4, "offsetY": 0.75, "offsetZ": -100, "fill": "#d06000" }, + { "type": "box", "width": 240, "height": 0.5, "depth": 4, "offsetY": 0.75, "offsetZ": -66, "fill": "#d06000" }, + { "type": "box", "width": 240, "height": 0.5, "depth": 4, "offsetY": 0.75, "offsetZ": -33, "fill": "#d06000" }, + { "type": "box", "width": 240, "height": 0.5, "depth": 4, "offsetY": 0.75, "offsetZ": 0, "fill": "#d06000" }, + { "type": "box", "width": 240, "height": 0.5, "depth": 4, "offsetY": 0.75, "offsetZ": 33, "fill": "#d06000" }, + { "type": "box", "width": 240, "height": 0.5, "depth": 4, "offsetY": 0.75, "offsetZ": 66, "fill": "#d06000" }, + { "type": "box", "width": 240, "height": 0.5, "depth": 4, "offsetY": 0.75, "offsetZ": 100, "fill": "#d06000" }, + + { "type": "box", "width": 4, "height": 0.5, "depth": 220, "offsetY": 0.75, "offsetX": -115, "fill": "#d06000" }, + { "type": "box", "width": 4, "height": 0.5, "depth": 220, "offsetY": 0.75, "offsetX": 115, "fill": "#d06000" }, + + { "type": "box", "width": 40, "height": 8, "depth": 25, "offsetX": -90, "offsetY": -5, "offsetZ": 120, "fill": "#333333" }, + { "type": "box", "width": 35, "height": 6, "depth": 20, "offsetX": -90, "offsetY": -5, "offsetZ": 120, "fill": "#222222" }, + { "type": "cylinder", "r": 3, "height": 15, "offsetX": -90, "offsetY": -10, "offsetZ": 135, "rotateX": 90, "fill": "#444444" }, + { "type": "cylinder", "r": 3, "height": 15, "offsetX": -80, "offsetY": -10, "offsetZ": 135, "rotateX": 90, "fill": "#444444" }, + + { "type": "box", "width": 15, "height": 4, "depth": 10, "offsetX": 100, "offsetY": -3, "offsetZ": 115, "fill": "#555555" }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": 100, "offsetY": -3, "offsetZ": 125, "rotateX": 90, "fill": "#666666" }, + + { "type": "cylinder", "r": 3, "height": 3, "offsetX": -118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": 118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": -118, "offsetY": 0, "offsetZ": 118, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": 118, "offsetY": 0, "offsetZ": 118, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-insulation.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-insulation.json new file mode 100644 index 000000000..93b622109 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-insulation.json @@ -0,0 +1,56 @@ +{ + "id": "bed-insulation", + "name": "Thermal Insulation Layer", + "partNumber": "BL-A1-INS-001", + "material": "ceramicFiber", + "quantity": 1, + "weight": 45.0, + "weightUnit": "g", + "baseY": -60, + "description": "256x256mm ceramic fiber insulation mat with aluminum foil backing - reduces heat loss and protects electronics", + "installation": { + "tools": [ + { "name": "Scissors", "size": "-", "required": true }, + { "name": "Marker", "size": "-", "required": true } + ], + "hardware": [ + { "name": "High-temp adhesive tape", "spec": "Kapton", "qty": 1, "reusable": false } + ], + "torque": [], + "notes": [ + "Cut holes for mounting screws before installation", + "Aluminum side faces toward heater", + "Do not compress insulation excessively", + "Check for gaps that could allow heat escape", + "Replace if damaged or contaminated with oils" + ] + }, + "geometry": [ + { "type": "rect", "width": 170, "height": 170, "rx": 2, "fill": "#c0c0c0" }, + { "type": "rect", "width": 160, "height": 160, "rx": 1, "fill": "#d0d0d0" }, + { "type": "circle", "r": 5, "offsetX": -75, "offsetY": -75, "fill": "#999" }, + { "type": "circle", "r": 5, "offsetX": 75, "offsetY": -75, "fill": "#999" }, + { "type": "circle", "r": 5, "offsetX": -75, "offsetY": 75, "fill": "#999" }, + { "type": "circle", "r": 5, "offsetX": 75, "offsetY": 75, "fill": "#999" } + ], + "geometry3d": [ + { "type": "box", "width": 256, "height": 5, "depth": 256, "fill": "#e8e8e0" }, + { "type": "box", "width": 254, "height": 0.3, "depth": 254, "offsetY": 2.65, "fill": "#c0c0c0" }, + { "type": "box", "width": 254, "height": 4, "depth": 254, "offsetY": 0.15, "fill": "#f0f0e8" }, + + { "type": "box", "width": 250, "height": 1, "depth": 3, "offsetY": 0, "offsetZ": -80, "fill": "#d8d8d0" }, + { "type": "box", "width": 250, "height": 1, "depth": 3, "offsetY": 0, "offsetZ": 0, "fill": "#d8d8d0" }, + { "type": "box", "width": 250, "height": 1, "depth": 3, "offsetY": 0, "offsetZ": 80, "fill": "#d8d8d0" }, + { "type": "box", "width": 3, "height": 1, "depth": 250, "offsetY": 0, "offsetX": -80, "fill": "#d8d8d0" }, + { "type": "box", "width": 3, "height": 1, "depth": 250, "offsetY": 0, "offsetX": 80, "fill": "#d8d8d0" }, + + { "type": "cylinder", "r": 5, "height": 8, "offsetX": -118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 5, "height": 8, "offsetX": 118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 5, "height": 8, "offsetX": -118, "offsetY": 0, "offsetZ": 118, "subtract": true }, + { "type": "cylinder", "r": 5, "height": 8, "offsetX": 118, "offsetY": 0, "offsetZ": 118, "subtract": true }, + + { "type": "box", "width": 50, "height": 8, "depth": 30, "offsetX": -90, "offsetY": 0, "offsetZ": 120, "subtract": true }, + + { "type": "box", "width": 256, "height": 0.2, "depth": 256, "offsetY": -2.6, "fill": "#d0d0c8" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-mount.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-mount.json new file mode 100644 index 000000000..0a69c7c59 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-mount.json @@ -0,0 +1,64 @@ +{ + "id": "bed-mount", + "name": "Bed Mounting Bracket with Spring", + "partNumber": "BL-A1-MNT-001", + "material": "steel", + "quantity": 4, + "weight": 12.0, + "weightUnit": "g", + "baseY": -90, + "description": "Spring-loaded bed leveling mount with adjustment knob - provides consistent bed leveling and vibration damping", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true } + ], + "hardware": [ + { "name": "Mount screw", "spec": "M3x30 SHCS", "grade": "12.9", "qty": 1, "reusable": true }, + { "name": "Leveling spring", "spec": "OD8xID4x15mm", "qty": 1, "reusable": true }, + { "name": "Adjustment wheel", "spec": "M3 knurled", "qty": 1, "reusable": true }, + { "name": "Lock washer", "spec": "M3 split", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Mount screw", "value": 0.6, "unit": "Nm", "sequence": "", "notes": "Adjust for proper bed height - spring should be partially compressed" } + ], + "notes": [ + "All four mounts must be adjusted for level bed", + "Use mesh leveling after manual adjustment", + "Replace springs if sagging or uneven compression", + "Check periodically for loosening" + ] + }, + "geometry": [ + { "type": "rect", "width": 20, "height": 25, "rx": 2, "fill": "#666" }, + { "type": "circle", "r": 6, "offsetY": -5, "fill": "#888" }, + { "type": "circle", "r": 3, "offsetY": -5, "fill": "#555" }, + { "type": "rect", "width": 12, "height": 8, "offsetY": 8, "rx": 1, "fill": "#777" } + ], + "geometry3d": [ + { "type": "box", "width": 15, "height": 3, "depth": 15, "fill": "#606060" }, + { "type": "cylinder", "r": 6, "height": 4, "offsetY": 3.5, "fill": "#707070" }, + { "type": "cylinder", "r": 5, "height": 2, "offsetY": 6, "fill": "#656565" }, + + { "type": "cylinder", "r": 2, "height": 10, "offsetY": 0, "subtract": true }, + + { "type": "cylinder", "r": 4, "height": 15, "offsetY": -9, "fill": "#c0c0c0" }, + { "type": "cylinder", "r": 3.5, "height": 14, "offsetY": -8.5, "fill": "#a0a0a0" }, + { "type": "cylinder", "r": 2, "height": 18, "offsetY": -10, "subtract": true }, + + { "type": "box", "width": 0.8, "height": 1.5, "depth": 8, "offsetY": -5, "fill": "#b0b0b0" }, + { "type": "box", "width": 0.8, "height": 1.5, "depth": 8, "offsetY": -7, "fill": "#b0b0b0" }, + { "type": "box", "width": 0.8, "height": 1.5, "depth": 8, "offsetY": -9, "fill": "#b0b0b0" }, + { "type": "box", "width": 0.8, "height": 1.5, "depth": 8, "offsetY": -11, "fill": "#b0b0b0" }, + { "type": "box", "width": 0.8, "height": 1.5, "depth": 8, "offsetY": -13, "fill": "#b0b0b0" }, + + { "type": "cylinder", "r": 8, "height": 5, "offsetY": -20, "fill": "#505050" }, + { "type": "cylinder", "r": 7, "height": 4, "offsetY": -19.5, "fill": "#454545" }, + { "type": "cylinder", "r": 2, "height": 8, "offsetY": -20, "subtract": true }, + + { "type": "box", "width": 1, "height": 4, "depth": 16, "offsetY": -20, "fill": "#555555" }, + { "type": "box", "width": 16, "height": 4, "depth": 1, "offsetY": -20, "fill": "#555555" }, + { "type": "box", "width": 1, "height": 4, "depth": 16, "offsetY": -20, "rotateY": 45, "fill": "#555555" }, + { "type": "box", "width": 1, "height": 4, "depth": 16, "offsetY": -20, "rotateY": -45, "fill": "#555555" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-thermistor.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-thermistor.json new file mode 100644 index 000000000..8d3044636 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/bed-thermistor.json @@ -0,0 +1,55 @@ +{ + "id": "bed-thermistor", + "name": "Bed Temperature Sensor", + "partNumber": "BL-A1-NTC-001", + "material": "ceramic", + "quantity": 1, + "weight": 5.0, + "weightUnit": "g", + "baseY": -10, + "description": "100K NTC thermistor with glass bead encapsulation and PTFE-insulated leads for accurate bed temperature sensing", + "installation": { + "tools": [ + { "name": "Hex key", "size": "1.5mm", "required": true }, + { "name": "Thermal paste", "size": "-", "required": true }, + { "name": "Multimeter", "size": "-", "required": true } + ], + "hardware": [ + { "name": "Thermistor mount screw", "spec": "M2x4 SHCS", "qty": 1, "reusable": true }, + { "name": "Thermistor clip", "spec": "spring steel", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Thermistor mount screw", "value": 0.2, "unit": "Nm", "sequence": "", "notes": "Light torque - do not crush thermistor" } + ], + "notes": [ + "Test resistance before installation: ~100K at 25C", + "Apply thin layer of thermal paste for good thermal contact", + "Route wires away from heater traces", + "Do not kink or sharply bend leads", + "Verify reading matches ambient temp before heating" + ] + }, + "geometry": [ + { "type": "circle", "r": 4, "fill": "#a08060" }, + { "type": "circle", "r": 2.5, "fill": "#806040" }, + { "type": "line", "x1": 0, "y1": 4, "x2": 0, "y2": 25, "stroke": "#555", "strokeWidth": 1 }, + { "type": "line", "x1": 2, "y1": 4, "x2": 2, "y2": 25, "stroke": "#555", "strokeWidth": 1 } + ], + "geometry3d": [ + { "type": "cylinder", "r": 2.5, "height": 4, "fill": "#a08060" }, + { "type": "cylinder", "r": 2, "height": 3, "offsetY": 0.5, "fill": "#806040" }, + { "type": "cylinder", "r": 1.8, "height": 2.5, "offsetY": 1, "fill": "#c0a080" }, + + { "type": "cylinder", "r": 0.5, "height": 30, "offsetX": -0.8, "offsetY": -17, "fill": "#555555" }, + { "type": "cylinder", "r": 0.5, "height": 30, "offsetX": 0.8, "offsetY": -17, "fill": "#555555" }, + + { "type": "cylinder", "r": 1, "height": 6, "offsetX": -0.8, "offsetY": -34, "fill": "#666666" }, + { "type": "cylinder", "r": 1, "height": 6, "offsetX": 0.8, "offsetY": -34, "fill": "#666666" }, + + { "type": "box", "width": 8, "height": 2, "depth": 5, "offsetX": 0, "offsetY": -38, "fill": "#333333" }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 0, "offsetY": -48, "fill": "#444444" }, + + { "type": "box", "width": 6, "height": 1, "depth": 4, "offsetX": 0, "offsetY": 2.5, "fill": "#707070" }, + { "type": "cylinder", "r": 1, "height": 2, "offsetX": 0, "offsetY": 2.5, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/build-surface.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/build-surface.json new file mode 100644 index 000000000..0dd78c5e5 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/build-surface.json @@ -0,0 +1,56 @@ +{ + "id": "build-surface", + "name": "PEI Textured Build Plate", + "partNumber": "BL-A1-PEI-001", + "material": "springSteel", + "quantity": 1, + "weight": 380.0, + "weightUnit": "g", + "baseY": 30, + "description": "256x256mm spring steel plate with textured PEI coating - magnetically attached for easy print removal", + "installation": { + "tools": [ + { "name": "Isopropyl alcohol", "size": "99%", "required": true }, + { "name": "Lint-free cloth", "size": "-", "required": true } + ], + "hardware": [], + "torque": [], + "notes": [ + "Clean with IPA before each print for best adhesion", + "Ensure magnetic attachment is secure and flat", + "Flex plate to remove prints - do not use sharp tools", + "Replace when PEI coating is damaged or worn", + "Do not exceed 100C bed temperature to preserve PEI" + ] + }, + "geometry": [ + { "type": "rect", "width": 175, "height": 175, "rx": 2, "fill": "#404040" }, + { "type": "rect", "width": 165, "height": 165, "rx": 1, "fill": "#353535" }, + { "type": "rect", "width": 40, "height": 12, "offsetY": -75, "fill": "#303030" }, + { "type": "text", "content": "PEI", "offsetY": 0, "fill": "#505050", "fontSize": 12 } + ], + "geometry3d": [ + { "type": "box", "width": 256, "height": 0.8, "depth": 256, "fill": "#404040" }, + { "type": "box", "width": 254, "height": 0.3, "depth": 254, "offsetY": 0.5, "fill": "#353535" }, + + { "type": "box", "width": 250, "height": 0.2, "depth": 250, "offsetY": 0.6, "fill": "#383838" }, + + { "type": "box", "width": 60, "height": 1.2, "depth": 20, "offsetX": 0, "offsetY": 0, "offsetZ": -120, "fill": "#303030" }, + { "type": "box", "width": 50, "height": 0.5, "depth": 15, "offsetX": 0, "offsetY": 0.7, "offsetZ": -120, "fill": "#282828" }, + + { "type": "box", "width": 40, "height": 1.5, "depth": 8, "offsetX": -100, "offsetY": 0, "offsetZ": -120, "fill": "#454545" }, + { "type": "box", "width": 40, "height": 1.5, "depth": 8, "offsetX": 100, "offsetY": 0, "offsetZ": -120, "fill": "#454545" }, + + { "type": "box", "width": 256, "height": 0.1, "depth": 2, "offsetY": 0.55, "offsetZ": -64, "fill": "#484848" }, + { "type": "box", "width": 256, "height": 0.1, "depth": 2, "offsetY": 0.55, "offsetZ": 0, "fill": "#484848" }, + { "type": "box", "width": 256, "height": 0.1, "depth": 2, "offsetY": 0.55, "offsetZ": 64, "fill": "#484848" }, + { "type": "box", "width": 2, "height": 0.1, "depth": 256, "offsetY": 0.55, "offsetX": -64, "fill": "#484848" }, + { "type": "box", "width": 2, "height": 0.1, "depth": 256, "offsetY": 0.55, "offsetX": 0, "fill": "#484848" }, + { "type": "box", "width": 2, "height": 0.1, "depth": 256, "offsetY": 0.55, "offsetX": 64, "fill": "#484848" }, + + { "type": "cylinder", "r": 3, "height": 1, "offsetX": -118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 1, "offsetX": 118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 1, "offsetX": -118, "offsetY": 0, "offsetZ": 118, "subtract": true }, + { "type": "cylinder", "r": 3, "height": 1, "offsetX": 118, "offsetY": 0, "offsetZ": 118, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/heatbed-plate.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/heatbed-plate.json new file mode 100644 index 000000000..96cc05efc --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/heatbed-plate.json @@ -0,0 +1,71 @@ +{ + "id": "heatbed-plate", + "name": "Heated Bed Plate", + "partNumber": "BL-A1-HBP-001", + "material": "aluminum", + "quantity": 1, + "weight": 850.0, + "weightUnit": "g", + "baseY": 0, + "description": "256x256mm 6061-T6 aluminum heated bed plate with precision machined surface and integrated thermistor mount", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Torque driver", "size": "1-5 Nm", "required": true }, + { "name": "Thermal paste", "size": "-", "required": true } + ], + "hardware": [ + { "name": "Bed mounting screw", "spec": "M3x8 SHCS", "grade": "12.9", "qty": 4, "reusable": true }, + { "name": "Bed leveling spring", "spec": "OD8xID4x15mm", "qty": 4, "reusable": true }, + { "name": "Adjustment knob", "spec": "M3 knurled", "qty": 4, "reusable": true }, + { "name": "Thermistor mounting screw", "spec": "M2x4", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Bed mounting screws", "value": 0.8, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "Do not overtighten - springs must compress evenly" }, + { "fastener": "Thermistor screw", "value": 0.3, "unit": "Nm", "sequence": "", "notes": "Apply thermal paste to thermistor first" } + ], + "notes": [ + "Clean mating surfaces before installation", + "Ensure thermistor has good thermal contact", + "Level bed after installation using mesh calibration", + "Check flatness with straight edge - should be within 0.1mm" + ] + }, + "geometry": [ + { "type": "rect", "width": 180, "height": 180, "rx": 4, "fill": "#707070" }, + { "type": "rect", "width": 170, "height": 170, "rx": 2, "fill": "#808080" }, + { "type": "circle", "r": 4, "offsetX": -80, "offsetY": -80, "fill": "#555" }, + { "type": "circle", "r": 4, "offsetX": 80, "offsetY": -80, "fill": "#555" }, + { "type": "circle", "r": 4, "offsetX": -80, "offsetY": 80, "fill": "#555" }, + { "type": "circle", "r": 4, "offsetX": 80, "offsetY": 80, "fill": "#555" }, + { "type": "rect", "width": 8, "height": 8, "offsetX": 70, "offsetY": 70, "fill": "#606060" }, + { "type": "text", "content": "256x256", "offsetY": 0, "fill": "#555", "fontSize": 10 } + ], + "geometry3d": [ + { "type": "box", "width": 256, "height": 4, "depth": 256, "fill": "#707070" }, + { "type": "box", "width": 250, "height": 2, "depth": 250, "offsetY": 1.5, "fill": "#808080" }, + { "type": "box", "width": 240, "height": 3, "depth": 240, "offsetY": -0.5, "fill": "#656565" }, + + { "type": "cylinder", "r": 5, "height": 6, "offsetX": -118, "offsetY": 0, "offsetZ": -118, "fill": "#505050" }, + { "type": "cylinder", "r": 5, "height": 6, "offsetX": 118, "offsetY": 0, "offsetZ": -118, "fill": "#505050" }, + { "type": "cylinder", "r": 5, "height": 6, "offsetX": -118, "offsetY": 0, "offsetZ": 118, "fill": "#505050" }, + { "type": "cylinder", "r": 5, "height": 6, "offsetX": 118, "offsetY": 0, "offsetZ": 118, "fill": "#505050" }, + + { "type": "cylinder", "r": 2, "height": 8, "offsetX": -118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": 118, "offsetY": 0, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": -118, "offsetY": 0, "offsetZ": 118, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 8, "offsetX": 118, "offsetY": 0, "offsetZ": 118, "subtract": true }, + + { "type": "box", "width": 10, "height": 5, "depth": 10, "offsetX": 100, "offsetY": -2, "offsetZ": 100, "fill": "#606060" }, + { "type": "cylinder", "r": 3, "height": 6, "offsetX": 100, "offsetY": -2, "offsetZ": 100, "subtract": true }, + + { "type": "box", "width": 30, "height": 2, "depth": 8, "offsetX": -100, "offsetY": -3, "offsetZ": 0, "fill": "#555555" }, + { "type": "box", "width": 8, "height": 2, "depth": 30, "offsetX": 0, "offsetY": -3, "offsetZ": -100, "fill": "#555555" }, + + { "type": "box", "width": 256, "height": 1, "depth": 3, "offsetY": 2.5, "offsetZ": 0, "fill": "#606060" }, + { "type": "box", "width": 3, "height": 1, "depth": 256, "offsetY": 2.5, "offsetX": 0, "fill": "#606060" }, + + { "type": "box", "width": 15, "height": 3, "depth": 10, "offsetX": 115, "offsetY": -3.5, "offsetZ": 0, "fill": "#505050" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/purge-wiper.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/purge-wiper.json new file mode 100644 index 000000000..757770c86 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/purge-wiper.json @@ -0,0 +1,64 @@ +{ + "id": "purge-wiper", + "name": "Purge and Wiper Station", + "partNumber": "BL-A1-PWS-001", + "material": "plastic", + "quantity": 1, + "weight": 35.0, + "weightUnit": "g", + "baseY": 60, + "description": "Nozzle purge bucket and silicone wiper assembly - cleans nozzle before print and catches purged filament", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "Phillips screwdriver", "size": "#1", "required": true } + ], + "hardware": [ + { "name": "Mount screw", "spec": "M3x6 BHCS", "qty": 2, "reusable": true }, + { "name": "Wiper bracket screw", "spec": "M2x4", "qty": 2, "reusable": true }, + { "name": "Silicone wiper", "spec": "heat-resistant", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Mount screws", "value": 0.5, "unit": "Nm", "sequence": "", "notes": "" }, + { "fastener": "Wiper bracket screws", "value": 0.3, "unit": "Nm", "sequence": "", "notes": "" } + ], + "notes": [ + "Clean purge bucket regularly", + "Replace silicone wiper when worn or hardened", + "Ensure wiper makes gentle contact with nozzle", + "Check alignment after bed leveling changes" + ] + }, + "geometry": [ + { "type": "rect", "width": 60, "height": 30, "rx": 3, "fill": "#333" }, + { "type": "rect", "width": 50, "height": 20, "rx": 2, "fill": "#444" }, + { "type": "rect", "width": 10, "height": 25, "offsetX": 20, "rx": 1, "fill": "#666" }, + { "type": "rect", "width": 3, "height": 20, "offsetX": 25, "fill": "#e05000" } + ], + "geometry3d": [ + { "type": "box", "width": 60, "height": 15, "depth": 35, "fill": "#333333" }, + { "type": "box", "width": 55, "height": 12, "depth": 30, "offsetY": 3, "subtract": true }, + + { "type": "box", "width": 58, "height": 2, "depth": 33, "offsetY": 7, "fill": "#3a3a3a" }, + + { "type": "box", "width": 60, "height": 3, "depth": 8, "offsetY": -6, "offsetZ": -18, "fill": "#404040" }, + { "type": "cylinder", "r": 2, "height": 4, "offsetX": -25, "offsetY": -6, "offsetZ": -18, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 4, "offsetX": 25, "offsetY": -6, "offsetZ": -18, "subtract": true }, + + { "type": "box", "width": 15, "height": 25, "depth": 8, "offsetX": 35, "offsetY": 5, "offsetZ": 0, "fill": "#444444" }, + { "type": "box", "width": 12, "height": 22, "depth": 6, "offsetX": 35, "offsetY": 6.5, "offsetZ": 0, "fill": "#505050" }, + + { "type": "box", "width": 3, "height": 20, "depth": 10, "offsetX": 42, "offsetY": 7, "offsetZ": 0, "fill": "#e05000" }, + { "type": "box", "width": 2, "height": 18, "depth": 8, "offsetX": 42.5, "offsetY": 8, "offsetZ": 0, "fill": "#ff6010" }, + + { "type": "box", "width": 8, "height": 8, "depth": 6, "offsetX": 35, "offsetY": -3, "offsetZ": 0, "fill": "#383838" }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 35, "offsetY": -3, "offsetZ": 0, "subtract": true }, + + { "type": "box", "width": 20, "height": 2, "depth": 25, "offsetX": -15, "offsetY": -5, "offsetZ": 0, "fill": "#2a2a2a" }, + { "type": "cylinder", "r": 5, "height": 3, "offsetX": -25, "offsetY": -5, "offsetZ": 0, "fill": "#353535" }, + { "type": "cylinder", "r": 3, "height": 5, "offsetX": -25, "offsetY": -5, "offsetZ": 0, "subtract": true }, + + { "type": "box", "width": 10, "height": 4, "depth": 30, "offsetX": -30, "offsetY": 3, "fill": "#3d3d3d" }, + { "type": "box", "width": 8, "height": 10, "depth": 28, "offsetX": -30, "offsetY": -1, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/y-carriage.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/y-carriage.json new file mode 100644 index 000000000..7dea6bf40 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/heatbed/parts/y-carriage.json @@ -0,0 +1,92 @@ +{ + "id": "y-carriage", + "name": "Y-Axis Carriage Plate", + "partNumber": "BL-A1-YCP-001", + "material": "aluminum", + "quantity": 1, + "weight": 420.0, + "weightUnit": "g", + "baseY": -120, + "description": "CNC machined aluminum carriage plate for Y-axis motion - mounts heated bed and rides on linear rails", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Torque driver", "size": "1-10 Nm", "required": true }, + { "name": "Loctite", "size": "242 blue", "required": true } + ], + "hardware": [ + { "name": "Linear bearing block screw", "spec": "M3x8 SHCS", "grade": "12.9", "qty": 8, "reusable": true }, + { "name": "Belt clamp screw", "spec": "M3x10 SHCS", "qty": 4, "reusable": true }, + { "name": "Belt clamp plate", "spec": "GT2 6mm", "qty": 2, "reusable": true }, + { "name": "Bed mount standoff", "spec": "M3x25 hex", "qty": 4, "reusable": true } + ], + "torque": [ + { "fastener": "Linear bearing screws", "value": 1.2, "unit": "Nm", "sequence": "Crosshatch", "notes": "Apply Loctite 242" }, + { "fastener": "Belt clamp screws", "value": 0.8, "unit": "Nm", "sequence": "Alternating", "notes": "Ensure belt is tight" }, + { "fastener": "Bed mount standoffs", "value": 1.5, "unit": "Nm", "sequence": "", "notes": "" } + ], + "notes": [ + "Check linear bearing preload after installation", + "Verify carriage moves freely along full Y travel", + "Belt tension should deflect ~3mm with moderate finger pressure", + "Clean rails and lubricate with light machine oil" + ] + }, + "geometry": [ + { "type": "rect", "width": 200, "height": 180, "rx": 5, "fill": "#707070" }, + { "type": "rect", "width": 180, "height": 160, "rx": 3, "fill": "#808080" }, + { "type": "rect", "width": 30, "height": 170, "offsetX": -85, "rx": 2, "fill": "#606060" }, + { "type": "rect", "width": 30, "height": 170, "offsetX": 85, "rx": 2, "fill": "#606060" }, + { "type": "circle", "r": 4, "offsetX": -85, "offsetY": -70, "fill": "#555" }, + { "type": "circle", "r": 4, "offsetX": -85, "offsetY": 70, "fill": "#555" }, + { "type": "circle", "r": 4, "offsetX": 85, "offsetY": -70, "fill": "#555" }, + { "type": "circle", "r": 4, "offsetX": 85, "offsetY": 70, "fill": "#555" } + ], + "geometry3d": [ + { "type": "box", "width": 280, "height": 5, "depth": 260, "fill": "#707070" }, + { "type": "box", "width": 270, "height": 3, "depth": 250, "offsetY": 1, "fill": "#808080" }, + + { "type": "box", "width": 280, "height": 8, "depth": 25, "offsetY": -3, "offsetZ": -115, "fill": "#606060" }, + { "type": "box", "width": 280, "height": 8, "depth": 25, "offsetY": -3, "offsetZ": 115, "fill": "#606060" }, + + { "type": "cylinder", "r": 8, "height": 10, "offsetX": -120, "offsetY": -2, "offsetZ": -115, "fill": "#555555" }, + { "type": "cylinder", "r": 8, "height": 10, "offsetX": -60, "offsetY": -2, "offsetZ": -115, "fill": "#555555" }, + { "type": "cylinder", "r": 8, "height": 10, "offsetX": 60, "offsetY": -2, "offsetZ": -115, "fill": "#555555" }, + { "type": "cylinder", "r": 8, "height": 10, "offsetX": 120, "offsetY": -2, "offsetZ": -115, "fill": "#555555" }, + { "type": "cylinder", "r": 8, "height": 10, "offsetX": -120, "offsetY": -2, "offsetZ": 115, "fill": "#555555" }, + { "type": "cylinder", "r": 8, "height": 10, "offsetX": -60, "offsetY": -2, "offsetZ": 115, "fill": "#555555" }, + { "type": "cylinder", "r": 8, "height": 10, "offsetX": 60, "offsetY": -2, "offsetZ": 115, "fill": "#555555" }, + { "type": "cylinder", "r": 8, "height": 10, "offsetX": 120, "offsetY": -2, "offsetZ": 115, "fill": "#555555" }, + + { "type": "cylinder", "r": 2, "height": 15, "offsetX": -120, "offsetY": -2, "offsetZ": -115, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": -60, "offsetY": -2, "offsetZ": -115, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 60, "offsetY": -2, "offsetZ": -115, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 120, "offsetY": -2, "offsetZ": -115, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": -120, "offsetY": -2, "offsetZ": 115, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": -60, "offsetY": -2, "offsetZ": 115, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 60, "offsetY": -2, "offsetZ": 115, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 15, "offsetX": 120, "offsetY": -2, "offsetZ": 115, "subtract": true }, + + { "type": "cylinder", "r": 6, "height": 8, "offsetX": -118, "offsetY": 5, "offsetZ": -118, "fill": "#656565" }, + { "type": "cylinder", "r": 6, "height": 8, "offsetX": 118, "offsetY": 5, "offsetZ": -118, "fill": "#656565" }, + { "type": "cylinder", "r": 6, "height": 8, "offsetX": -118, "offsetY": 5, "offsetZ": 118, "fill": "#656565" }, + { "type": "cylinder", "r": 6, "height": 8, "offsetX": 118, "offsetY": 5, "offsetZ": 118, "fill": "#656565" }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": -118, "offsetY": 5, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": 118, "offsetY": 5, "offsetZ": -118, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": -118, "offsetY": 5, "offsetZ": 118, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 12, "offsetX": 118, "offsetY": 5, "offsetZ": 118, "subtract": true }, + + { "type": "box", "width": 40, "height": 8, "depth": 15, "offsetX": -130, "offsetY": -3, "offsetZ": 0, "fill": "#585858" }, + { "type": "box", "width": 35, "height": 3, "depth": 12, "offsetX": -130, "offsetY": 0, "offsetZ": 0, "fill": "#505050" }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -135, "offsetY": -3, "offsetZ": -4, "subtract": true }, + { "type": "cylinder", "r": 2, "height": 10, "offsetX": -135, "offsetY": -3, "offsetZ": 4, "subtract": true }, + + { "type": "box", "width": 200, "height": 10, "depth": 180, "offsetY": 0, "subtract": true }, + + { "type": "box", "width": 8, "height": 6, "depth": 220, "offsetX": -90, "offsetY": 1, "fill": "#757575" }, + { "type": "box", "width": 8, "height": 6, "depth": 220, "offsetX": 90, "offsetY": 1, "fill": "#757575" }, + { "type": "box", "width": 220, "height": 6, "depth": 8, "offsetZ": -90, "offsetY": 1, "fill": "#757575" }, + { "type": "box", "width": 220, "height": 6, "depth": 8, "offsetZ": 90, "offsetY": 1, "fill": "#757575" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/assembly.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/assembly.json new file mode 100644 index 000000000..0d320abb1 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/assembly.json @@ -0,0 +1,18 @@ +{ + "id": "motion-system", + "name": "Motion System Assembly", + "description": "CoreXY-style motion system with linear rails, stepper motors, GT2 belts, and resonance compensation for the Bambu Lab A1 3D printer", + "category": "Motion", + "version": "1.0.0", + "parts": [ + "x-axis-rail", + "x-axis-carriage", + "y-axis-rail", + "x-motor", + "y-motor", + "xy-belt", + "belt-tensioner", + "x-axis-endstop", + "accelerometer" + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/accelerometer.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/accelerometer.json new file mode 100644 index 000000000..06ec00807 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/accelerometer.json @@ -0,0 +1,68 @@ +{ + "id": "accelerometer", + "name": "Input Shaper Accelerometer", + "partNumber": "BL-A1-MR009", + "material": "plastic", + "quantity": 1, + "weight": 2.5, + "weightUnit": "g", + "baseY": 560, + "description": "ADXL345 3-axis accelerometer for resonance compensation and input shaping calibration", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "Precision screwdriver", "size": "PH0", "required": true } + ], + "hardware": [ + { "name": "M2x4 socket head cap screw", "spec": "M2x0.4x4", "grade": "8.8", "qty": 2, "reusable": true }, + { "name": "FFC cable", "spec": "6-pin 0.5mm pitch", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Mounting screws", "value": 0.15, "unit": "Nm", "sequence": "", "notes": "Sensor must be rigidly mounted" } + ], + "notes": [ + "Mount rigidly to printhead - no flex allowed", + "Ensure correct orientation (X/Y/Z axes)", + "Run calibration after any mechanical changes", + "Check cable connection if readings are noisy" + ] + }, + "geometry": [ + { "type": "rect", "width": 18, "height": 18, "rx": 2, "fill": "#2040A0" }, + { "type": "rect", "width": 8, "height": 8, "fill": "#303030" }, + { "type": "circle", "r": 1, "offsetX": -6, "offsetY": -6, "fill": "#FFD700" }, + { "type": "circle", "r": 1, "offsetX": 6, "offsetY": -6, "fill": "#FFD700" }, + { "type": "circle", "r": 1, "offsetX": -6, "offsetY": 6, "fill": "#FFD700" }, + { "type": "circle", "r": 1, "offsetX": 6, "offsetY": 6, "fill": "#FFD700" } + ], + "geometry3d": [ + { "type": "box", "width": 18, "height": 1.5, "depth": 18, "fill": "#2040A0" }, + + { "type": "box", "width": 5, "height": 2, "depth": 5, "offsetY": 1.5, "fill": "#303030" }, + + { "type": "cylinder", "r": 0.8, "height": 0.5, "offsetX": -6, "offsetZ": -6, "offsetY": 1, "fill": "#FFD700" }, + { "type": "cylinder", "r": 0.8, "height": 0.5, "offsetX": 6, "offsetZ": -6, "offsetY": 1, "fill": "#FFD700" }, + { "type": "cylinder", "r": 0.8, "height": 0.5, "offsetX": -6, "offsetZ": 6, "offsetY": 1, "fill": "#FFD700" }, + { "type": "cylinder", "r": 0.8, "height": 0.5, "offsetX": 6, "offsetZ": 6, "offsetY": 1, "fill": "#FFD700" }, + + { "type": "cylinder", "r": 0.5, "height": 0.3, "offsetX": -7, "offsetZ": 0, "offsetY": 1, "fill": "#C0C0C0" }, + { "type": "cylinder", "r": 0.5, "height": 0.3, "offsetX": -5, "offsetZ": 0, "offsetY": 1, "fill": "#C0C0C0" }, + { "type": "cylinder", "r": 0.5, "height": 0.3, "offsetX": -3, "offsetZ": 0, "offsetY": 1, "fill": "#C0C0C0" }, + { "type": "cylinder", "r": 0.5, "height": 0.3, "offsetX": 7, "offsetZ": 0, "offsetY": 1, "fill": "#C0C0C0" }, + { "type": "cylinder", "r": 0.5, "height": 0.3, "offsetX": 5, "offsetZ": 0, "offsetY": 1, "fill": "#C0C0C0" }, + { "type": "cylinder", "r": 0.5, "height": 0.3, "offsetX": 3, "offsetZ": 0, "offsetY": 1, "fill": "#C0C0C0" }, + + { "type": "cylinder", "r": 1, "height": 2, "offsetX": -7, "offsetZ": -7, "subtract": true }, + { "type": "cylinder", "r": 1, "height": 2, "offsetX": 7, "offsetZ": -7, "subtract": true }, + + { "type": "box", "width": 2, "height": 1, "depth": 3, "offsetX": 3, "offsetZ": 3, "offsetY": 1.5, "fill": "#404040" }, + { "type": "box", "width": 1.5, "height": 0.8, "depth": 2, "offsetX": -3, "offsetZ": 3, "offsetY": 1.5, "fill": "#505050" }, + + { "type": "box", "width": 10, "height": 2, "depth": 4, "offsetZ": -11, "fill": "#404040" }, + { "type": "box", "width": 8, "height": 1, "depth": 2, "offsetZ": -12, "offsetY": 1, "fill": "#F5F5DC" }, + + { "type": "box", "width": 3, "height": 1.2, "depth": 2, "offsetX": -5, "offsetZ": 5, "offsetY": 1.5, "fill": "#606060" }, + + { "type": "cylinder", "r": 0.3, "height": 0.4, "offsetX": 0, "offsetZ": 0, "offsetY": 2.5, "fill": "#00FF00" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/belt-tensioner.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/belt-tensioner.json new file mode 100644 index 000000000..55a5b6447 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/belt-tensioner.json @@ -0,0 +1,65 @@ +{ + "id": "belt-tensioner", + "name": "Belt Tensioner Assembly", + "partNumber": "BL-A1-MR007", + "material": "aluminum", + "quantity": 2, + "weight": 18.0, + "weightUnit": "g", + "baseY": 440, + "description": "Adjustable belt tensioner with idler pulley for GT2 belt tension adjustment", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Belt tension gauge", "size": "GT2", "required": true } + ], + "hardware": [ + { "name": "M3x20 socket head cap screw", "spec": "M3x0.5x20", "grade": "8.8", "qty": 1, "reusable": true }, + { "name": "M3 nylock nut", "spec": "M3", "qty": 1, "reusable": false }, + { "name": "F623ZZ bearing", "spec": "3x10x4mm flanged", "qty": 2, "reusable": true }, + { "name": "Idler spacer", "spec": "3x5x6mm", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Tensioner adjustment screw", "value": 0.3, "unit": "Nm", "sequence": "", "notes": "Adjust until target belt tension reached" }, + { "fastener": "Idler axle screw", "value": 0.5, "unit": "Nm", "sequence": "", "notes": "Idler must spin freely" } + ], + "notes": [ + "Set belt tension to 40-50Hz", + "Check tensioner does not bottom out", + "Verify idler spins freely without wobble", + "Re-check tension after 50 print hours" + ] + }, + "geometry": [ + { "type": "rect", "width": 30, "height": 20, "rx": 3, "fill": "#606060" }, + { "type": "circle", "r": 8, "offsetX": 8, "fill": "#505050" }, + { "type": "circle", "r": 5, "offsetX": 8, "fill": "#707070" }, + { "type": "rect", "width": 8, "height": 25, "offsetX": -12, "fill": "#505050" }, + { "type": "circle", "r": 2, "offsetX": -12, "offsetY": 10, "fill": "#404040" } + ], + "geometry3d": [ + { "type": "box", "width": 25, "height": 15, "depth": 20, "fill": "#606060" }, + + { "type": "box", "width": 8, "height": 25, "depth": 15, "offsetX": -12, "fill": "#505050" }, + + { "type": "cylinder", "r": 2, "height": 30, "offsetX": -12, "offsetY": 8, "subtract": true }, + + { "type": "cylinder", "r": 10, "height": 8, "offsetX": 10, "rotateX": 90, "fill": "#707070" }, + { "type": "cylinder", "r": 8, "height": 6, "offsetX": 10, "rotateX": 90, "fill": "#808080" }, + + { "type": "cylinder", "r": 11, "height": 1, "offsetX": 10, "offsetZ": 4, "rotateX": 90, "fill": "#606060" }, + { "type": "cylinder", "r": 11, "height": 1, "offsetX": 10, "offsetZ": -4, "rotateX": 90, "fill": "#606060" }, + + { "type": "cylinder", "r": 1.5, "height": 25, "offsetX": 10, "rotateX": 90, "fill": "#404040" }, + + { "type": "cylinder", "r": 5, "height": 3, "offsetX": 10, "offsetZ": -6, "rotateX": 90, "fill": "#505050" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetX": 10, "offsetZ": -8, "rotateX": 90, "fill": "#404040" }, + + { "type": "box", "width": 8, "height": 8, "depth": 25, "offsetX": -5, "offsetY": -5, "fill": "#555555" }, + { "type": "cylinder", "r": 2.5, "height": 30, "offsetX": -5, "offsetY": -5, "rotateX": 90, "subtract": true }, + + { "type": "cylinder", "r": 4, "height": 3, "offsetX": -12, "offsetY": 12, "fill": "#707070" }, + { "type": "cylinder", "r": 1.5, "height": 5, "offsetX": -12, "offsetY": 14, "fill": "#404040" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-carriage.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-carriage.json new file mode 100644 index 000000000..4c5b6de91 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-carriage.json @@ -0,0 +1,64 @@ +{ + "id": "x-axis-carriage", + "name": "X-Axis Carriage Block", + "partNumber": "BL-A1-MR002", + "material": "steel", + "quantity": 1, + "weight": 28.0, + "weightUnit": "g", + "baseY": 140, + "description": "MGN12H carriage block with recirculating ball bearings for printhead mounting", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "Torque screwdriver", "size": "0.5-2 Nm", "required": true }, + { "name": "Grease syringe", "size": "-", "required": false } + ], + "hardware": [ + { "name": "M3x6 socket head cap screw", "spec": "M3x0.5x6", "grade": "12.9", "qty": 4, "reusable": true }, + { "name": "Grease nipple", "spec": "M3", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Printhead mounting screws", "value": 0.6, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "Do not overtighten" } + ], + "notes": [ + "Pre-lubricate with lithium grease before assembly", + "Slide carriage gently onto rail - do not force", + "Check for smooth movement without excessive play", + "Re-grease every 500 print hours" + ] + }, + "geometry": [ + { "type": "rect", "width": 35, "height": 28, "rx": 3, "fill": "#505050" }, + { "type": "rect", "width": 28, "height": 20, "offsetY": -2, "fill": "#606060" }, + { "type": "circle", "r": 2, "offsetX": -10, "offsetY": -8, "fill": "#404040" }, + { "type": "circle", "r": 2, "offsetX": 10, "offsetY": -8, "fill": "#404040" }, + { "type": "circle", "r": 2, "offsetX": -10, "offsetY": 8, "fill": "#404040" }, + { "type": "circle", "r": 2, "offsetX": 10, "offsetY": 8, "fill": "#404040" } + ], + "geometry3d": [ + { "type": "box", "width": 27, "height": 13, "depth": 35, "fill": "#505050" }, + + { "type": "box", "width": 35, "height": 8, "depth": 28, "offsetY": 10, "fill": "#606060" }, + + { "type": "box", "width": 27, "height": 5, "depth": 12, "offsetY": -9, "fill": "#404040" }, + + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -10, "offsetZ": -10, "offsetY": 10, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 10, "offsetZ": -10, "offsetY": 10, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -10, "offsetZ": 10, "offsetY": 10, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 10, "offsetZ": 10, "offsetY": 10, "subtract": true }, + + { "type": "cylinder", "r": 3, "height": 2, "offsetX": -10, "offsetZ": -10, "offsetY": 15, "fill": "#707070" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": 10, "offsetZ": -10, "offsetY": 15, "fill": "#707070" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": -10, "offsetZ": 10, "offsetY": 15, "fill": "#707070" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": 10, "offsetZ": 10, "offsetY": 15, "fill": "#707070" }, + + { "type": "cylinder", "r": 2, "height": 4, "offsetX": 0, "offsetZ": 15, "offsetY": 8, "rotateX": 90, "fill": "#303030" }, + + { "type": "box", "width": 4, "height": 6, "depth": 30, "offsetX": -12, "offsetY": 4, "fill": "#555555" }, + { "type": "box", "width": 4, "height": 6, "depth": 30, "offsetX": 12, "offsetY": 4, "fill": "#555555" }, + + { "type": "cylinder", "r": 1, "height": 28, "offsetX": -11, "offsetY": 4, "offsetZ": 0, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 1, "height": 28, "offsetX": 11, "offsetY": 4, "offsetZ": 0, "rotateX": 90, "fill": "#808080" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-endstop.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-endstop.json new file mode 100644 index 000000000..9c533bfe8 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-endstop.json @@ -0,0 +1,62 @@ +{ + "id": "x-axis-endstop", + "name": "X-Axis Optical Endstop", + "partNumber": "BL-A1-MR008", + "material": "plastic", + "quantity": 1, + "weight": 3.0, + "weightUnit": "g", + "baseY": 500, + "description": "Optical endstop sensor with infrared LED and phototransistor for X-axis homing", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2mm", "required": true }, + { "name": "Multimeter", "size": "-", "required": false } + ], + "hardware": [ + { "name": "M2x6 socket head cap screw", "spec": "M2x0.4x6", "grade": "8.8", "qty": 2, "reusable": true }, + { "name": "JST-XH 3-pin connector", "spec": "2.54mm pitch", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Mounting screws", "value": 0.2, "unit": "Nm", "sequence": "", "notes": "Do not overtighten - plastic mount" } + ], + "notes": [ + "Gap between LED and sensor must be clear", + "Clean slot with compressed air if triggering fails", + "Check 3.3V supply voltage at connector", + "Verify flag enters slot cleanly without contact" + ] + }, + "geometry": [ + { "type": "rect", "width": 24, "height": 12, "rx": 2, "fill": "#303030" }, + { "type": "rect", "width": 6, "height": 18, "offsetX": -6, "fill": "#252525" }, + { "type": "rect", "width": 6, "height": 18, "offsetX": 6, "fill": "#252525" }, + { "type": "circle", "r": 2, "offsetX": -6, "offsetY": -6, "fill": "#FF3030" }, + { "type": "circle", "r": 2, "offsetX": 6, "offsetY": -6, "fill": "#303030" } + ], + "geometry3d": [ + { "type": "box", "width": 24, "height": 6, "depth": 10, "fill": "#303030" }, + + { "type": "box", "width": 6, "height": 16, "depth": 10, "offsetX": -8, "offsetY": 8, "fill": "#252525" }, + { "type": "box", "width": 6, "height": 16, "depth": 10, "offsetX": 8, "offsetY": 8, "fill": "#252525" }, + + { "type": "box", "width": 8, "height": 10, "depth": 6, "offsetY": 8, "subtract": true }, + + { "type": "cylinder", "r": 2, "height": 3, "offsetX": -8, "offsetY": 12, "offsetZ": 4, "rotateX": 90, "fill": "#FF3030" }, + + { "type": "cylinder", "r": 2, "height": 3, "offsetX": 8, "offsetY": 12, "offsetZ": 4, "rotateX": 90, "fill": "#404040" }, + + { "type": "cylinder", "r": 1, "height": 8, "offsetX": -10, "subtract": true }, + { "type": "cylinder", "r": 1, "height": 8, "offsetX": 10, "subtract": true }, + + { "type": "box", "width": 8, "height": 4, "depth": 12, "offsetY": -5, "fill": "#404040" }, + { "type": "cylinder", "r": 1, "height": 8, "offsetX": -2, "offsetY": -5, "offsetZ": 8, "rotateX": 90, "fill": "#C0C0C0" }, + { "type": "cylinder", "r": 1, "height": 8, "offsetX": 0, "offsetY": -5, "offsetZ": 8, "rotateX": 90, "fill": "#C0C0C0" }, + { "type": "cylinder", "r": 1, "height": 8, "offsetX": 2, "offsetY": -5, "offsetZ": 8, "rotateX": 90, "fill": "#C0C0C0" }, + + { "type": "cylinder", "r": 1.5, "height": 2, "offsetX": -8, "offsetY": 12, "offsetZ": 2, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 1.5, "height": 2, "offsetX": 8, "offsetY": 12, "offsetZ": 2, "rotateX": 90, "fill": "#808080" }, + + { "type": "box", "width": 10, "height": 1, "depth": 8, "offsetY": 3, "fill": "#1a1a1a" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-rail.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-rail.json new file mode 100644 index 000000000..0770b1908 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-axis-rail.json @@ -0,0 +1,65 @@ +{ + "id": "x-axis-rail", + "name": "X-Axis Linear Rail", + "partNumber": "BL-A1-MR001", + "material": "steel", + "quantity": 1, + "weight": 85.0, + "weightUnit": "g", + "baseY": 100, + "description": "MGN12H linear rail for X-axis printhead movement, 220mm travel length", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Torque screwdriver", "size": "0.5-2 Nm", "required": true }, + { "name": "Level gauge", "size": "-", "required": true }, + { "name": "Dial indicator", "size": "-", "required": false } + ], + "hardware": [ + { "name": "M3x8 socket head cap screw", "spec": "M3x0.5x8", "grade": "12.9", "qty": 8, "reusable": true }, + { "name": "Alignment dowel pin", "spec": "2x4mm", "qty": 2, "reusable": true } + ], + "torque": [ + { "fastener": "Rail mounting screws", "value": 0.8, "unit": "Nm", "sequence": "Center out alternating", "notes": "Apply threadlocker" } + ], + "notes": [ + "Clean rail with isopropyl alcohol before installation", + "Apply light machine oil to rail surface", + "Check parallelism to Y-axis after mounting", + "Verify smooth carriage movement without binding" + ] + }, + "geometry": [ + { "type": "rect", "width": 180, "height": 12, "rx": 2, "fill": "#606060" }, + { "type": "rect", "width": 170, "height": 4, "offsetY": 0, "fill": "#505050" }, + { "type": "circle", "r": 2, "offsetX": -80, "fill": "#404040" }, + { "type": "circle", "r": 2, "offsetX": -60, "fill": "#404040" }, + { "type": "circle", "r": 2, "offsetX": 60, "fill": "#404040" }, + { "type": "circle", "r": 2, "offsetX": 80, "fill": "#404040" } + ], + "geometry3d": [ + { "type": "box", "width": 220, "height": 8, "depth": 12, "fill": "#505050" }, + + { "type": "box", "width": 220, "height": 3, "depth": 4, "offsetY": 4, "fill": "#606060" }, + + { "type": "box", "width": 220, "height": 2, "depth": 2, "offsetY": 2, "offsetZ": 4, "fill": "#707070" }, + { "type": "box", "width": 220, "height": 2, "depth": 2, "offsetY": 2, "offsetZ": -4, "fill": "#707070" }, + + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -100, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -75, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -50, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 50, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 75, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 100, "subtract": true }, + + { "type": "cylinder", "r": 3, "height": 2, "offsetX": -100, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": -75, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": -50, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": 50, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": 75, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": 100, "offsetY": -4, "fill": "#404040" }, + + { "type": "box", "width": 10, "height": 10, "depth": 14, "offsetX": -105, "fill": "#606060" }, + { "type": "box", "width": 10, "height": 10, "depth": 14, "offsetX": 105, "fill": "#606060" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-motor.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-motor.json new file mode 100644 index 000000000..b228e6292 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/x-motor.json @@ -0,0 +1,72 @@ +{ + "id": "x-motor", + "name": "X-Axis Stepper Motor", + "partNumber": "BL-A1-MR004", + "material": "steel", + "quantity": 1, + "weight": 180.0, + "weightUnit": "g", + "baseY": 220, + "description": "NEMA 17 stepper motor with integrated GT2 pulley for X-axis drive, 1.8 degree step angle", + "installation": { + "tools": [ + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Hex key", "size": "1.5mm", "required": true }, + { "name": "Torque screwdriver", "size": "1-4 Nm", "required": true } + ], + "hardware": [ + { "name": "M3x10 socket head cap screw", "spec": "M3x0.5x10", "grade": "8.8", "qty": 4, "reusable": true }, + { "name": "GT2 20T pulley", "spec": "5mm bore", "qty": 1, "reusable": true }, + { "name": "Pulley set screw", "spec": "M3x4 grub", "qty": 2, "reusable": true } + ], + "torque": [ + { "fastener": "Motor mounting screws", "value": 1.2, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "" }, + { "fastener": "Pulley grub screws", "value": 0.5, "unit": "Nm", "sequence": "Alternate tightening", "notes": "One screw on shaft flat" } + ], + "notes": [ + "Align pulley with belt path before tightening", + "Connect motor cable before mounting", + "Check for correct rotation direction", + "Verify pulley set screw on shaft flat" + ] + }, + "geometry": [ + { "type": "rect", "width": 42, "height": 42, "rx": 3, "fill": "#303030" }, + { "type": "circle", "r": 11, "fill": "#505050" }, + { "type": "circle", "r": 2.5, "fill": "#404040" }, + { "type": "circle", "r": 3, "offsetX": -15, "offsetY": -15, "fill": "#252525" }, + { "type": "circle", "r": 3, "offsetX": 15, "offsetY": -15, "fill": "#252525" }, + { "type": "circle", "r": 3, "offsetX": -15, "offsetY": 15, "fill": "#252525" }, + { "type": "circle", "r": 3, "offsetX": 15, "offsetY": 15, "fill": "#252525" }, + { "type": "circle", "r": 8, "offsetY": -28, "fill": "#707070" } + ], + "geometry3d": [ + { "type": "box", "width": 42, "height": 40, "depth": 42, "fill": "#303030" }, + + { "type": "cylinder", "r": 11, "height": 3, "offsetY": 21, "fill": "#404040" }, + + { "type": "cylinder", "r": 2.5, "height": 24, "offsetY": 32, "fill": "#606060" }, + + { "type": "cylinder", "r": 8, "height": 12, "offsetY": 38, "fill": "#707070" }, + { "type": "cylinder", "r": 6, "height": 14, "offsetY": 38, "fill": "#606060" }, + { "type": "cylinder", "r": 2.6, "height": 16, "offsetY": 38, "subtract": true }, + + { "type": "box", "width": 3, "height": 4, "depth": 3, "offsetX": 0, "offsetY": 42, "offsetZ": 6, "fill": "#505050" }, + + { "type": "cylinder", "r": 1.5, "height": 45, "offsetX": -15.5, "offsetZ": -15.5, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 45, "offsetX": 15.5, "offsetZ": -15.5, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 45, "offsetX": -15.5, "offsetZ": 15.5, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 45, "offsetX": 15.5, "offsetZ": 15.5, "subtract": true }, + + { "type": "box", "width": 15, "height": 8, "depth": 10, "offsetY": -20, "offsetZ": -20, "fill": "#404040" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetY": -20, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetX": 4, "offsetY": -20, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetX": -4, "offsetY": -20, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetX": 8, "offsetY": -20, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + + { "type": "cylinder", "r": 3, "height": 3, "offsetX": -15.5, "offsetZ": -15.5, "offsetY": 21, "fill": "#505050" }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": 15.5, "offsetZ": -15.5, "offsetY": 21, "fill": "#505050" }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": -15.5, "offsetZ": 15.5, "offsetY": 21, "fill": "#505050" }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": 15.5, "offsetZ": 15.5, "offsetY": 21, "fill": "#505050" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/xy-belt.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/xy-belt.json new file mode 100644 index 000000000..8404b94b6 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/xy-belt.json @@ -0,0 +1,67 @@ +{ + "id": "xy-belt", + "name": "GT2 Timing Belt", + "partNumber": "BL-A1-MR006", + "material": "rubber", + "quantity": 2, + "weight": 15.0, + "weightUnit": "g", + "baseY": 380, + "description": "GT2 timing belt 6mm width, fiberglass reinforced, for X and Y axis drive", + "installation": { + "tools": [ + { "name": "Belt tension gauge", "size": "GT2", "required": true }, + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Needle nose pliers", "size": "-", "required": false } + ], + "hardware": [ + { "name": "Belt clip", "spec": "GT2 6mm", "qty": 2, "reusable": true }, + { "name": "Belt anchor", "spec": "M3 crimp", "qty": 2, "reusable": false } + ], + "torque": [ + { "fastener": "Belt anchor screws", "value": 0.5, "unit": "Nm", "sequence": "", "notes": "Ensure belt teeth fully engaged" } + ], + "notes": [ + "Target belt tension: 40-50Hz frequency", + "Check belt for wear, cracks, or missing teeth", + "Route belt without twists", + "Replace if stretched more than 1%" + ] + }, + "geometry": [ + { "type": "rect", "width": 180, "height": 6, "rx": 1, "fill": "#303030" }, + { "type": "rect", "width": 175, "height": 2, "fill": "#252525" }, + { "type": "line", "x1": -85, "y1": -1, "x2": 85, "y2": -1, "stroke": "#404040", "strokeWidth": 0.5 } + ], + "geometry3d": [ + { "type": "box", "width": 400, "height": 1.5, "depth": 6, "fill": "#303030" }, + + { "type": "box", "width": 400, "height": 0.8, "depth": 6, "offsetY": 1.1, "fill": "#252525" }, + + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -195, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -191, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -187, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -183, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -179, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -175, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -171, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": -167, "offsetY": -0.5, "fill": "#404040" }, + + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 195, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 191, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 187, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 183, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 179, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 175, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 171, "offsetY": -0.5, "fill": "#404040" }, + { "type": "box", "width": 2, "height": 0.8, "depth": 6, "offsetX": 167, "offsetY": -0.5, "fill": "#404040" }, + + { "type": "box", "width": 0.5, "height": 1.5, "depth": 6, "offsetX": 0, "fill": "#404040" }, + + { "type": "box", "width": 15, "height": 4, "depth": 10, "offsetX": -195, "offsetY": 3, "fill": "#505050" }, + { "type": "cylinder", "r": 1.5, "height": 12, "offsetX": -195, "offsetY": 3, "rotateX": 90, "subtract": true }, + + { "type": "box", "width": 15, "height": 4, "depth": 10, "offsetX": 195, "offsetY": 3, "fill": "#505050" }, + { "type": "cylinder", "r": 1.5, "height": 12, "offsetX": 195, "offsetY": 3, "rotateX": 90, "subtract": true } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-axis-rail.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-axis-rail.json new file mode 100644 index 000000000..fe6957d96 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-axis-rail.json @@ -0,0 +1,74 @@ +{ + "id": "y-axis-rail", + "name": "Y-Axis Linear Rails", + "partNumber": "BL-A1-MR003", + "material": "steel", + "quantity": 2, + "weight": 120.0, + "weightUnit": "g", + "baseY": 180, + "description": "MGN12H linear rails for Y-axis bed movement, 256mm travel length, dual rail configuration", + "installation": { + "tools": [ + { "name": "Hex key", "size": "2.5mm", "required": true }, + { "name": "Torque screwdriver", "size": "0.5-2 Nm", "required": true }, + { "name": "Precision straightedge", "size": "300mm", "required": true }, + { "name": "Feeler gauge", "size": "0.02-0.1mm", "required": true } + ], + "hardware": [ + { "name": "M3x8 socket head cap screw", "spec": "M3x0.5x8", "grade": "12.9", "qty": 16, "reusable": true }, + { "name": "Rail alignment shim", "spec": "0.1mm", "qty": 4, "reusable": true } + ], + "torque": [ + { "fastener": "Rail mounting screws", "value": 0.8, "unit": "Nm", "sequence": "Center out alternating", "notes": "Verify parallelism between rails" } + ], + "notes": [ + "Both rails must be parallel within 0.05mm", + "Clean mounting surface thoroughly", + "Apply thin film of grease to rail grooves", + "Check bed movement is square to X-axis" + ] + }, + "geometry": [ + { "type": "rect", "width": 200, "height": 12, "rx": 2, "fill": "#606060" }, + { "type": "rect", "width": 190, "height": 4, "fill": "#505050" }, + { "type": "rect", "width": 200, "height": 12, "rx": 2, "offsetY": 30, "fill": "#606060" }, + { "type": "rect", "width": 190, "height": 4, "offsetY": 30, "fill": "#505050" } + ], + "geometry3d": [ + { "type": "box", "width": 12, "height": 8, "depth": 256, "offsetX": -80, "fill": "#505050" }, + { "type": "box", "width": 12, "height": 8, "depth": 256, "offsetX": 80, "fill": "#505050" }, + + { "type": "box", "width": 4, "height": 3, "depth": 256, "offsetX": -80, "offsetY": 4, "fill": "#606060" }, + { "type": "box", "width": 4, "height": 3, "depth": 256, "offsetX": 80, "offsetY": 4, "fill": "#606060" }, + + { "type": "box", "width": 2, "height": 2, "depth": 256, "offsetX": -84, "offsetY": 2, "fill": "#707070" }, + { "type": "box", "width": 2, "height": 2, "depth": 256, "offsetX": -76, "offsetY": 2, "fill": "#707070" }, + { "type": "box", "width": 2, "height": 2, "depth": 256, "offsetX": 84, "offsetY": 2, "fill": "#707070" }, + { "type": "box", "width": 2, "height": 2, "depth": 256, "offsetX": 76, "offsetY": 2, "fill": "#707070" }, + + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -80, "offsetZ": -120, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -80, "offsetZ": -80, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -80, "offsetZ": -40, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -80, "offsetZ": 40, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -80, "offsetZ": 80, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": -80, "offsetZ": 120, "subtract": true }, + + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 80, "offsetZ": -120, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 80, "offsetZ": -80, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 80, "offsetZ": -40, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 80, "offsetZ": 40, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 80, "offsetZ": 80, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 10, "offsetX": 80, "offsetZ": 120, "subtract": true }, + + { "type": "cylinder", "r": 3, "height": 2, "offsetX": -80, "offsetZ": -120, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": -80, "offsetZ": 120, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": 80, "offsetZ": -120, "offsetY": -4, "fill": "#404040" }, + { "type": "cylinder", "r": 3, "height": 2, "offsetX": 80, "offsetZ": 120, "offsetY": -4, "fill": "#404040" }, + + { "type": "box", "width": 14, "height": 10, "depth": 10, "offsetX": -80, "offsetZ": -123, "fill": "#606060" }, + { "type": "box", "width": 14, "height": 10, "depth": 10, "offsetX": -80, "offsetZ": 123, "fill": "#606060" }, + { "type": "box", "width": 14, "height": 10, "depth": 10, "offsetX": 80, "offsetZ": -123, "fill": "#606060" }, + { "type": "box", "width": 14, "height": 10, "depth": 10, "offsetX": 80, "offsetZ": 123, "fill": "#606060" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-motor.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-motor.json new file mode 100644 index 000000000..daa910dc3 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/motion-system/parts/y-motor.json @@ -0,0 +1,75 @@ +{ + "id": "y-motor", + "name": "Y-Axis Stepper Motor", + "partNumber": "BL-A1-MR005", + "material": "steel", + "quantity": 1, + "weight": 220.0, + "weightUnit": "g", + "baseY": 300, + "description": "NEMA 17 stepper motor with integrated GT2 pulley for Y-axis bed drive, 1.8 degree step angle, longer body for higher torque", + "installation": { + "tools": [ + { "name": "Hex key", "size": "3mm", "required": true }, + { "name": "Hex key", "size": "1.5mm", "required": true }, + { "name": "Torque screwdriver", "size": "1-4 Nm", "required": true } + ], + "hardware": [ + { "name": "M3x10 socket head cap screw", "spec": "M3x0.5x10", "grade": "8.8", "qty": 4, "reusable": true }, + { "name": "GT2 20T pulley", "spec": "5mm bore", "qty": 1, "reusable": true }, + { "name": "Pulley set screw", "spec": "M3x4 grub", "qty": 2, "reusable": true }, + { "name": "Motor damper", "spec": "NEMA 17", "qty": 1, "reusable": true } + ], + "torque": [ + { "fastener": "Motor mounting screws", "value": 1.2, "unit": "Nm", "sequence": "Diagonal pattern", "notes": "Install damper between motor and mount" }, + { "fastener": "Pulley grub screws", "value": 0.5, "unit": "Nm", "sequence": "Alternate tightening", "notes": "One screw on shaft flat" } + ], + "notes": [ + "Y motor handles bed inertia - requires higher torque", + "Use motor damper to reduce vibration resonance", + "Ensure belt tension is even on both sides", + "Check current limiting if motor runs hot" + ] + }, + "geometry": [ + { "type": "rect", "width": 42, "height": 48, "rx": 3, "fill": "#303030" }, + { "type": "circle", "r": 11, "fill": "#505050" }, + { "type": "circle", "r": 2.5, "fill": "#404040" }, + { "type": "circle", "r": 3, "offsetX": -15, "offsetY": -18, "fill": "#252525" }, + { "type": "circle", "r": 3, "offsetX": 15, "offsetY": -18, "fill": "#252525" }, + { "type": "circle", "r": 3, "offsetX": -15, "offsetY": 18, "fill": "#252525" }, + { "type": "circle", "r": 3, "offsetX": 15, "offsetY": 18, "fill": "#252525" }, + { "type": "circle", "r": 8, "offsetY": -32, "fill": "#707070" } + ], + "geometry3d": [ + { "type": "box", "width": 42, "height": 48, "depth": 42, "fill": "#303030" }, + + { "type": "cylinder", "r": 11, "height": 3, "offsetY": 25, "fill": "#404040" }, + + { "type": "cylinder", "r": 2.5, "height": 24, "offsetY": 37, "fill": "#606060" }, + + { "type": "cylinder", "r": 8, "height": 12, "offsetY": 43, "fill": "#707070" }, + { "type": "cylinder", "r": 6, "height": 14, "offsetY": 43, "fill": "#606060" }, + { "type": "cylinder", "r": 2.6, "height": 16, "offsetY": 43, "subtract": true }, + + { "type": "box", "width": 3, "height": 4, "depth": 3, "offsetX": 0, "offsetY": 47, "offsetZ": 6, "fill": "#505050" }, + + { "type": "cylinder", "r": 1.5, "height": 55, "offsetX": -15.5, "offsetZ": -15.5, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 55, "offsetX": 15.5, "offsetZ": -15.5, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 55, "offsetX": -15.5, "offsetZ": 15.5, "subtract": true }, + { "type": "cylinder", "r": 1.5, "height": 55, "offsetX": 15.5, "offsetZ": 15.5, "subtract": true }, + + { "type": "box", "width": 15, "height": 8, "depth": 10, "offsetY": -24, "offsetZ": -20, "fill": "#404040" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetY": -24, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetX": 4, "offsetY": -24, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetX": -4, "offsetY": -24, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + { "type": "cylinder", "r": 2, "height": 5, "offsetX": 8, "offsetY": -24, "offsetZ": -25, "rotateX": 90, "fill": "#808080" }, + + { "type": "cylinder", "r": 3, "height": 3, "offsetX": -15.5, "offsetZ": -15.5, "offsetY": 25, "fill": "#505050" }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": 15.5, "offsetZ": -15.5, "offsetY": 25, "fill": "#505050" }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": -15.5, "offsetZ": 15.5, "offsetY": 25, "fill": "#505050" }, + { "type": "cylinder", "r": 3, "height": 3, "offsetX": 15.5, "offsetZ": 15.5, "offsetY": 25, "fill": "#505050" }, + + { "type": "box", "width": 46, "height": 3, "depth": 46, "offsetY": -25, "fill": "#252525" } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/assembly.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/assembly.json new file mode 100644 index 000000000..86f99859f --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/assembly.json @@ -0,0 +1,17 @@ +{ + "name": "Bambu Lab A1 Printhead Assembly", + "description": "Complete printhead assembly for the Bambu Lab A1 3D printer featuring direct drive extrusion, all-metal hotend, integrated filament cutter, and dual cooling system. Designed for high-speed printing with AMS multi-material support.", + "category": "3d-printers", + "manufacturer": "Bambu Lab", + "model": "A1", + "parts": [ + "hotend", + "extruder-motor", + "extruder-gears", + "cooling-fan", + "hotend-fan", + "toolhead-board", + "filament-cutter", + "nozzle" + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/cooling-fan.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/cooling-fan.json new file mode 100644 index 000000000..da2a08c78 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/cooling-fan.json @@ -0,0 +1,263 @@ +{ + "id": "cooling-fan", + "name": "Part Cooling Blower Fan", + "partNumber": "BL-A1-CF001", + "material": "Plastic/Metal", + "quantity": 1, + "weight": 18, + "weightUnit": "g", + "baseY": 0, + "description": "High-performance 5015 radial blower fan for part cooling during printing. Features centrifugal design for high static pressure airflow directed at the print zone. PWM controlled for variable speed operation from 0-100%.", + "installation": { + "tools": [ + "2mm hex key", + "Phillips screwdriver" + ], + "hardware": [ + "M2.5x6 socket head cap screw x2", + "Fan duct adapter" + ], + "torque": [ + "Fan mounting screws: 0.2 Nm" + ], + "notes": [ + "Ensure fan outlet aligns with cooling duct", + "Verify fan spins freely before securing", + "Check wire routing to avoid hot components", + "Test PWM control after installation" + ] + }, + "geometry": [ + { + "type": "rect", + "x": 5, + "y": 5, + "width": 50, + "height": 15, + "rx": 2, + "fill": "#303030", + "stroke": "#202020", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 20, + "cy": 12.5, + "r": 6, + "fill": "#404040", + "stroke": "#353535", + "strokeWidth": 1 + }, + { + "type": "rect", + "x": 40, + "y": 8, + "width": 12, + "height": 9, + "fill": "#252525" + } + ], + "geometry3d": [ + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#303030", + "width": 51, + "height": 15, + "depth": 51 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#252525", + "width": 49, + "height": 13, + "depth": 49 + }, + { + "type": "cylinder", + "height": 12, + "r": 18, + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#353535" + }, + { + "type": "cylinder", + "height": 14, + "r": 12, + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 16, + "r": 4, + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 0, + "offsetZ": 10, + "fill": "#454545", + "width": 4, + "height": 10, + "depth": 16 + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 0, + "offsetZ": -10, + "fill": "#454545", + "width": 4, + "height": 10, + "depth": 16 + }, + { + "type": "box", + "offsetX": 2, + "offsetY": 0, + "offsetZ": 0, + "fill": "#454545", + "width": 16, + "height": 10, + "depth": 4 + }, + { + "type": "box", + "offsetX": -18, + "offsetY": 0, + "offsetZ": 0, + "fill": "#454545", + "width": 16, + "height": 10, + "depth": 4 + }, + { + "type": "box", + "offsetX": -2, + "offsetY": 0, + "offsetZ": 8, + "fill": "#454545", + "width": 12, + "height": 10, + "depth": 4 + }, + { + "type": "box", + "offsetX": -14, + "offsetY": 0, + "offsetZ": -8, + "fill": "#454545", + "width": 12, + "height": 10, + "depth": 4 + }, + { + "type": "box", + "offsetX": 20, + "offsetY": 0, + "offsetZ": 0, + "fill": "#252525", + "width": 14, + "height": 12, + "depth": 16 + }, + { + "type": "box", + "offsetX": 28, + "offsetY": 0, + "offsetZ": 0, + "fill": "#202020", + "width": 6, + "height": 10, + "depth": 14 + }, + { + "type": "cylinder", + "height": 15, + "r": 1.5, + "offsetX": -20, + "offsetY": 0, + "offsetZ": 20, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 15, + "r": 1.5, + "offsetX": -20, + "offsetY": 0, + "offsetZ": -20, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 15, + "r": 1.5, + "offsetX": 20, + "offsetY": 0, + "offsetZ": 20, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 15, + "r": 1.5, + "offsetX": 20, + "offsetY": 0, + "offsetZ": -20, + "fill": "#404040" + }, + { + "type": "box", + "offsetX": 18, + "offsetY": 8, + "offsetZ": -18, + "fill": "#202020", + "width": 8, + "height": 4, + "depth": 6 + }, + { + "type": "box", + "offsetX": 18, + "offsetY": 10, + "offsetZ": -18, + "fill": "#f0f0f0", + "width": 6, + "height": 2, + "depth": 4 + }, + { + "type": "cylinder", + "height": 8, + "r": 2, + "offsetX": 23, + "offsetY": 8, + "offsetZ": -18, + "fill": "#e04000" + }, + { + "type": "cylinder", + "height": 8, + "r": 2, + "offsetX": 23, + "offsetY": 8, + "offsetZ": -14, + "fill": "#303030" + } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-gears.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-gears.json new file mode 100644 index 000000000..1cc68bcaa --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-gears.json @@ -0,0 +1,275 @@ +{ + "id": "extruder-gears", + "name": "Dual Drive Gear Assembly", + "partNumber": "BL-A1-EG001", + "material": "Hardened Steel", + "quantity": 1, + "weight": 12, + "weightUnit": "g", + "baseY": 0, + "description": "Dual-drive extruder gear assembly with hardened steel gears featuring precision-cut teeth for reliable filament grip. Includes primary drive gear and synchronized idler gear for consistent extrusion force on both sides of filament.", + "installation": { + "tools": [ + "1.5mm hex key", + "Needle nose pliers", + "Tweezers" + ], + "hardware": [ + "M3 set screw x2", + "Bearing 3x8x3mm x2", + "Idler arm spring" + ], + "torque": [ + "Set screws: 0.3 Nm" + ], + "notes": [ + "Align gear teeth for smooth filament feeding", + "Ensure set screw engages motor shaft flat", + "Clean gears of debris before installation", + "Check gear mesh clearance - should be minimal backlash" + ] + }, + "geometry": [ + { + "type": "circle", + "cx": 15, + "cy": 20, + "r": 8, + "fill": "#505050", + "stroke": "#404040", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 15, + "cy": 20, + "r": 5, + "fill": "#606060", + "stroke": "#505050", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 30, + "cy": 20, + "r": 8, + "fill": "#505050", + "stroke": "#404040", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 30, + "cy": 20, + "r": 5, + "fill": "#606060", + "stroke": "#505050", + "strokeWidth": 1 + }, + { + "type": "rect", + "x": 20, + "y": 15, + "width": 5, + "height": 10, + "fill": "#707070" + } + ], + "geometry3d": [ + { + "type": "cylinder", + "height": 8, + "r": 6, + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 4, + "r": 7, + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 3, + "r": 4, + "offsetX": -8, + "offsetY": -3, + "offsetZ": 0, + "fill": "#454545" + }, + { + "type": "cylinder", + "height": 3, + "r": 4, + "offsetX": -8, + "offsetY": 5, + "offsetZ": 0, + "fill": "#454545" + }, + { + "type": "cylinder", + "height": 14, + "r": 2.5, + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#353535" + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 0, + "offsetZ": 3, + "fill": "#404040", + "width": 2, + "height": 8, + "depth": 3 + }, + { + "type": "cylinder", + "height": 8, + "r": 6, + "offsetX": 8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 4, + "r": 7, + "offsetX": 8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 3, + "r": 4, + "offsetX": 8, + "offsetY": -3, + "offsetZ": 0, + "fill": "#454545" + }, + { + "type": "cylinder", + "height": 3, + "r": 4, + "offsetX": 8, + "offsetY": 5, + "offsetZ": 0, + "fill": "#454545" + }, + { + "type": "cylinder", + "height": 2, + "r": 4, + "offsetX": 8, + "offsetY": -4, + "offsetZ": 0, + "fill": "#707070" + }, + { + "type": "cylinder", + "height": 2, + "r": 4, + "offsetX": 8, + "offsetY": 6, + "offsetZ": 0, + "fill": "#707070" + }, + { + "type": "cylinder", + "height": 16, + "r": 2, + "offsetX": 8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#808080", + "width": 4, + "height": 3, + "depth": 4 + }, + { + "type": "cylinder", + "height": 6, + "r": 1, + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#909090" + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 2, + "offsetZ": 5, + "fill": "#303030", + "width": 3, + "height": 2, + "depth": 4 + }, + { + "type": "cylinder", + "height": 4, + "rotation": [ + 90, + 0, + 0 + ], + "r": 1, + "offsetX": -8, + "offsetY": 2, + "offsetZ": 7, + "fill": "#252525" + }, + { + "type": "box", + "offsetX": 12, + "offsetY": 0, + "offsetZ": 0, + "fill": "#404040", + "width": 6, + "height": 10, + "depth": 12 + }, + { + "type": "cylinder", + "height": 6, + "rotation": [ + 0, + 0, + 90 + ], + "r": 1.5, + "offsetX": 15, + "offsetY": 0, + "offsetZ": 4, + "fill": "#505050" + }, + { + "type": "box", + "offsetX": 16, + "offsetY": 0, + "offsetZ": -4, + "fill": "#606060", + "width": 2, + "height": 6, + "depth": 6 + } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-motor.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-motor.json new file mode 100644 index 000000000..68221f128 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/extruder-motor.json @@ -0,0 +1,282 @@ +{ + "id": "extruder-motor", + "name": "Extruder Stepper Motor", + "partNumber": "BL-A1-EM001", + "material": "Steel/Aluminum/Copper", + "quantity": 1, + "weight": 68, + "weightUnit": "g", + "baseY": 0, + "description": "Compact NEMA 14 pancake stepper motor optimized for direct drive extrusion. Features high torque output (0.1 Nm), low inertia design, and integrated drive gear shaft. 1.8° step angle with 200 steps per revolution.", + "installation": { + "tools": [ + "2mm hex key", + "2.5mm hex key", + "Phillips screwdriver" + ], + "hardware": [ + "M3x8 socket head cap screw x4", + "Motor mounting plate" + ], + "torque": [ + "Motor mounting screws: 0.4 Nm" + ], + "notes": [ + "Align motor shaft with extruder gear assembly", + "Ensure motor connector is properly seated", + "Do not over-tighten mounting screws - can warp motor face", + "Verify motor direction before full assembly" + ] + }, + "geometry": [ + { + "type": "rect", + "x": 5, + "y": 5, + "width": 35, + "height": 20, + "fill": "#303030", + "stroke": "#202020", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 22.5, + "cy": 15, + "r": 8, + "fill": "#404040", + "stroke": "#303030", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 22.5, + "cy": 15, + "r": 3, + "fill": "#606060", + "stroke": "#505050", + "strokeWidth": 1 + }, + { + "type": "rect", + "x": 20, + "y": 0, + "width": 5, + "height": 5, + "fill": "#505050" + }, + { + "type": "rect", + "x": 8, + "y": 8, + "width": 4, + "height": 4, + "fill": "#252525" + }, + { + "type": "rect", + "x": 33, + "y": 8, + "width": 4, + "height": 4, + "fill": "#252525" + }, + { + "type": "rect", + "x": 8, + "y": 18, + "width": 4, + "height": 4, + "fill": "#252525" + }, + { + "type": "rect", + "x": 33, + "y": 18, + "width": 4, + "height": 4, + "fill": "#252525" + } + ], + "geometry3d": [ + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#303030", + "width": 35, + "height": 14, + "depth": 35 + }, + { + "type": "cylinder", + "height": 2, + "r": 11, + "offsetX": 0, + "offsetY": -1, + "offsetZ": 0, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 2, + "r": 11, + "offsetX": 0, + "offsetY": 13, + "offsetZ": 0, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 2, + "r": 12, + "offsetX": 0, + "offsetY": -5, + "offsetZ": 0, + "fill": "#383838" + }, + { + "type": "cylinder", + "height": 10, + "r": 2.5, + "offsetX": 0, + "offsetY": -10, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 8, + "r": 3.5, + "offsetX": 0, + "offsetY": -15, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 4, + "r": 5, + "offsetX": 0, + "offsetY": -18, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 3, + "r": 1.6, + "offsetX": 12, + "offsetY": -3, + "offsetZ": 12, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 3, + "r": 1.6, + "offsetX": -12, + "offsetY": -3, + "offsetZ": 12, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 3, + "r": 1.6, + "offsetX": 12, + "offsetY": -3, + "offsetZ": -12, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 3, + "r": 1.6, + "offsetX": -12, + "offsetY": -3, + "offsetZ": -12, + "fill": "#252525" + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 15, + "offsetZ": 12, + "fill": "#202020", + "width": 10, + "height": 4, + "depth": 8 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 17, + "offsetZ": 12, + "fill": "#f0f0f0", + "width": 8, + "height": 2, + "depth": 6 + }, + { + "type": "box", + "offsetX": -3, + "offsetY": 17, + "offsetZ": 12, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": -1, + "offsetY": 17, + "offsetZ": 12, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": 1, + "offsetY": 17, + "offsetZ": 12, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": 3, + "offsetY": 17, + "offsetZ": 12, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": 14, + "offsetY": 3, + "offsetZ": 0, + "fill": "#252525", + "width": 8, + "height": 8, + "depth": 20 + }, + { + "type": "cylinder", + "height": 14, + "r": 6, + "offsetX": 0, + "offsetY": 7, + "offsetZ": 0, + "fill": "#353535" + } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/filament-cutter.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/filament-cutter.json new file mode 100644 index 000000000..c1d226a7a --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/filament-cutter.json @@ -0,0 +1,283 @@ +{ + "id": "filament-cutter", + "name": "Integrated Filament Cutter", + "partNumber": "BL-A1-FC001", + "material": "Hardened Steel/Aluminum", + "quantity": 1, + "weight": 22, + "weightUnit": "g", + "baseY": 0, + "description": "Precision filament cutting mechanism for automated multi-color printing and filament changes. Features hardened steel blade with servo-actuated lever mechanism. Enables clean cuts for reliable tip shaping during AMS operations.", + "installation": { + "tools": [ + "2mm hex key", + "1.5mm hex key", + "Tweezers" + ], + "hardware": [ + "M2x6 socket head cap screw x3", + "Cutter lever spring", + "Blade retention clip" + ], + "torque": [ + "Blade mounting: 0.2 Nm", + "Housing screws: 0.3 Nm" + ], + "notes": [ + "Handle blade with care - extremely sharp", + "Verify blade alignment before final assembly", + "Test cutting action before full operation", + "Replace blade after 5000 cuts or if dull" + ] + }, + "geometry": [ + { + "type": "rect", + "x": 5, + "y": 5, + "width": 30, + "height": 25, + "fill": "#404040", + "stroke": "#303030", + "strokeWidth": 1 + }, + { + "type": "polygon", + "points": "10,15 25,15 25,20 15,25 10,20", + "fill": "#808080", + "stroke": "#606060", + "strokeWidth": 1 + }, + { + "type": "rect", + "x": 12, + "y": 8, + "width": 16, + "height": 4, + "fill": "#606060" + } + ], + "geometry3d": [ + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#404040", + "width": 28, + "height": 20, + "depth": 18 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": -8, + "offsetZ": 0, + "fill": "#353535", + "width": 24, + "height": 6, + "depth": 14 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 12, + "offsetZ": 0, + "fill": "#454545", + "width": 20, + "height": 4, + "depth": 12 + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#808080", + "width": 4, + "height": 16, + "depth": 12 + }, + { + "type": "box", + "offsetX": -10, + "offsetY": -6, + "offsetZ": 0, + "fill": "#909090", + "width": 2, + "height": 8, + "depth": 10 + }, + { + "type": "box", + "offsetX": -6, + "offsetY": -8, + "offsetZ": 0, + "fill": "#707070", + "width": 6, + "height": 3, + "depth": 8 + }, + { + "type": "cylinder", + "height": 14, + "rotation": [ + 0, + 0, + 90 + ], + "r": 2, + "offsetX": -8, + "offsetY": 6, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "box", + "offsetX": 6, + "offsetY": 0, + "offsetZ": 0, + "fill": "#505050", + "width": 8, + "height": 14, + "depth": 10 + }, + { + "type": "box", + "offsetX": 3, + "offsetY": -4, + "offsetZ": 0, + "fill": "#606060", + "width": 3, + "height": 8, + "depth": 8 + }, + { + "type": "cylinder", + "height": 20, + "r": 1.5, + "offsetX": 0, + "offsetY": 12, + "offsetZ": 0, + "fill": "#707070" + }, + { + "type": "cylinder", + "height": 6, + "r": 2.5, + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#555555" + }, + { + "type": "box", + "offsetX": 10, + "offsetY": 4, + "offsetZ": 0, + "fill": "#303030", + "width": 10, + "height": 8, + "depth": 8 + }, + { + "type": "box", + "offsetX": 14, + "offsetY": 4, + "offsetZ": 0, + "fill": "#252525", + "width": 6, + "height": 6, + "depth": 6 + }, + { + "type": "cylinder", + "height": 3, + "r": 2, + "offsetX": 14, + "offsetY": 8, + "offsetZ": 0, + "fill": "#404040" + }, + { + "type": "box", + "offsetX": 10, + "offsetY": 10, + "offsetZ": 0, + "fill": "#505050", + "width": 10, + "height": 2, + "depth": 3 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 8, + "offsetZ": 0, + "fill": "#454545", + "width": 12, + "height": 3, + "depth": 4 + }, + { + "type": "cylinder", + "height": 5, + "rotation": [ + 0, + 0, + 90 + ], + "r": 1.5, + "offsetX": -4, + "offsetY": 8, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 20, + "r": 1.3, + "offsetX": -12, + "offsetY": 0, + "offsetZ": -6, + "fill": "#353535" + }, + { + "type": "cylinder", + "height": 20, + "r": 1.3, + "offsetX": -12, + "offsetY": 0, + "offsetZ": 6, + "fill": "#353535" + }, + { + "type": "cylinder", + "height": 20, + "r": 1.3, + "offsetX": 12, + "offsetY": 0, + "offsetZ": -6, + "fill": "#353535" + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 3, + "offsetZ": 6, + "fill": "#404040", + "width": 3, + "height": 2, + "depth": 4 + }, + { + "type": "cylinder", + "height": 6, + "r": 1, + "offsetX": -8, + "offsetY": 3, + "offsetZ": 8, + "fill": "#707070" + } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend-fan.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend-fan.json new file mode 100644 index 000000000..44f14066d --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend-fan.json @@ -0,0 +1,289 @@ +{ + "id": "hotend-fan", + "name": "Heatsink Cooling Fan", + "partNumber": "BL-A1-HF001", + "material": "Plastic/Metal", + "quantity": 1, + "weight": 10, + "weightUnit": "g", + "baseY": 0, + "description": "Axial cooling fan (4010 size) for hotend heatsink thermal management. Runs continuously during printing to maintain cold-side temperature and prevent heat creep. Features ball bearing construction for long life and low noise.", + "installation": { + "tools": [ + "2mm hex key", + "Phillips screwdriver" + ], + "hardware": [ + "M3x16 socket head cap screw x2", + "Fan mounting bracket" + ], + "torque": [ + "Fan mounting screws: 0.3 Nm" + ], + "notes": [ + "Position fan to blow air onto heatsink fins", + "Verify correct airflow direction (arrow on fan housing)", + "Check for obstructions before powering on", + "Fan should run whenever hotend is above 50°C" + ] + }, + "geometry": [ + { + "type": "rect", + "x": 5, + "y": 5, + "width": 40, + "height": 10, + "fill": "#303030", + "stroke": "#202020", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 25, + "cy": 10, + "r": 4, + "fill": "#404040" + }, + { + "type": "circle", + "cx": 25, + "cy": 10, + "r": 2, + "fill": "#505050" + } + ], + "geometry3d": [ + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#303030", + "width": 40, + "height": 10, + "depth": 40 + }, + { + "type": "cylinder", + "height": 10, + "r": 18, + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 12, + "r": 6, + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 14, + "r": 3, + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 8, + "fill": "#454545", + "width": 3, + "height": 8, + "depth": 14 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": -8, + "fill": "#454545", + "width": 3, + "height": 8, + "depth": 14 + }, + { + "type": "box", + "offsetX": 8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#454545", + "width": 14, + "height": 8, + "depth": 3 + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 0, + "offsetZ": 0, + "fill": "#454545", + "width": 14, + "height": 8, + "depth": 3 + }, + { + "type": "box", + "offsetX": 6, + "offsetY": 0, + "offsetZ": 6, + "fill": "#454545", + "width": 10, + "height": 8, + "depth": 3 + }, + { + "type": "box", + "offsetX": -6, + "offsetY": 0, + "offsetZ": -6, + "fill": "#454545", + "width": 10, + "height": 8, + "depth": 3 + }, + { + "type": "box", + "offsetX": 6, + "offsetY": 0, + "offsetZ": -6, + "fill": "#454545", + "width": 10, + "height": 8, + "depth": 3 + }, + { + "type": "box", + "offsetX": -6, + "offsetY": 0, + "offsetZ": 6, + "fill": "#454545", + "width": 10, + "height": 8, + "depth": 3 + }, + { + "type": "box", + "offsetX": 16, + "offsetY": 0, + "offsetZ": 16, + "fill": "#353535", + "width": 6, + "height": 10, + "depth": 6 + }, + { + "type": "box", + "offsetX": -16, + "offsetY": 0, + "offsetZ": 16, + "fill": "#353535", + "width": 6, + "height": 10, + "depth": 6 + }, + { + "type": "box", + "offsetX": 16, + "offsetY": 0, + "offsetZ": -16, + "fill": "#353535", + "width": 6, + "height": 10, + "depth": 6 + }, + { + "type": "box", + "offsetX": -16, + "offsetY": 0, + "offsetZ": -16, + "fill": "#353535", + "width": 6, + "height": 10, + "depth": 6 + }, + { + "type": "cylinder", + "height": 12, + "r": 1.6, + "offsetX": 16, + "offsetY": 0, + "offsetZ": 16, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 12, + "r": 1.6, + "offsetX": -16, + "offsetY": 0, + "offsetZ": 16, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 12, + "r": 1.6, + "offsetX": 16, + "offsetY": 0, + "offsetZ": -16, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 12, + "r": 1.6, + "offsetX": -16, + "offsetY": 0, + "offsetZ": -16, + "fill": "#252525" + }, + { + "type": "box", + "offsetX": -16, + "offsetY": 6, + "offsetZ": 0, + "fill": "#202020", + "width": 6, + "height": 3, + "depth": 8 + }, + { + "type": "cylinder", + "height": 10, + "r": 1, + "offsetX": -20, + "offsetY": 6, + "offsetZ": 2, + "fill": "#e04000" + }, + { + "type": "cylinder", + "height": 10, + "r": 1, + "offsetX": -20, + "offsetY": 6, + "offsetZ": -2, + "fill": "#303030" + }, + { + "type": "box", + "offsetX": 14, + "offsetY": 0, + "offsetZ": 0, + "fill": "#505050", + "width": 4, + "height": 8, + "depth": 2 + } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend.json new file mode 100644 index 000000000..e7a09ee24 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/hotend.json @@ -0,0 +1,381 @@ +{ + "id": "hotend", + "name": "All-Metal Hotend Assembly", + "partNumber": "BL-A1-HE001", + "material": "Aluminum/Stainless Steel", + "quantity": 1, + "weight": 45, + "weightUnit": "g", + "baseY": 0, + "description": "All-metal hotend assembly featuring aluminum heatsink with cooling fins, stainless steel heat break for thermal isolation, and brass heat block. Designed for high-temperature printing up to 300°C with excellent heat dissipation.", + "installation": { + "tools": [ + "2mm hex key", + "2.5mm hex key", + "7mm wrench", + "Thermal paste" + ], + "hardware": [ + "M2.5x8 socket head cap screw x2", + "M3x6 socket head cap screw x2", + "Thermal compound" + ], + "torque": [ + "Heat block screws: 0.5 Nm", + "Heatsink mounting: 0.8 Nm" + ], + "notes": [ + "Apply thermal paste to heat break threads before installation", + "Ensure heatsink fins are oriented for proper airflow", + "Tighten nozzle while hot (200°C) for proper seal", + "Do not overtighten - can damage heat break" + ] + }, + "geometry": [ + { + "type": "rect", + "x": 5, + "y": 2, + "width": 30, + "height": 25, + "fill": "#505050", + "stroke": "#303030", + "strokeWidth": 1 + }, + { + "type": "rect", + "x": 8, + "y": 4, + "width": 24, + "height": 2, + "fill": "#707070" + }, + { + "type": "rect", + "x": 8, + "y": 8, + "width": 24, + "height": 2, + "fill": "#707070" + }, + { + "type": "rect", + "x": 8, + "y": 12, + "width": 24, + "height": 2, + "fill": "#707070" + }, + { + "type": "rect", + "x": 8, + "y": 16, + "width": 24, + "height": 2, + "fill": "#707070" + }, + { + "type": "rect", + "x": 8, + "y": 20, + "width": 24, + "height": 2, + "fill": "#707070" + }, + { + "type": "rect", + "x": 17, + "y": 27, + "width": 6, + "height": 8, + "fill": "#808080", + "stroke": "#606060", + "strokeWidth": 1 + }, + { + "type": "rect", + "x": 15, + "y": 35, + "width": 10, + "height": 10, + "fill": "#c0a060", + "stroke": "#a08040", + "strokeWidth": 1 + }, + { + "type": "polygon", + "points": "17,45 23,45 21,52 19,52", + "fill": "#c0a060", + "stroke": "#a08040", + "strokeWidth": 1 + } + ], + "geometry3d": [ + { + "type": "cylinder", + "height": 3, + "r": 11, + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 13, + "offsetX": 0, + "offsetY": 3, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 10, + "offsetX": 0, + "offsetY": 4.5, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 13, + "offsetX": 0, + "offsetY": 6, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 10, + "offsetX": 0, + "offsetY": 7.5, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 13, + "offsetX": 0, + "offsetY": 9, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 10, + "offsetX": 0, + "offsetY": 10.5, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 13, + "offsetX": 0, + "offsetY": 12, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 10, + "offsetX": 0, + "offsetY": 13.5, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 13, + "offsetX": 0, + "offsetY": 15, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 10, + "offsetX": 0, + "offsetY": 16.5, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 1.5, + "r": 13, + "offsetX": 0, + "offsetY": 18, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 3, + "r": 11, + "offsetX": 0, + "offsetY": 19.5, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 12, + "r": 3, + "offsetX": 0, + "offsetY": 22.5, + "offsetZ": 0, + "fill": "#808080" + }, + { + "type": "cylinder", + "height": 2, + "r": 4, + "offsetX": 0, + "offsetY": 22.5, + "offsetZ": 0, + "fill": "#707070" + }, + { + "type": "cylinder", + "height": 2, + "r": 4, + "offsetX": 0, + "offsetY": 32.5, + "offsetZ": 0, + "fill": "#707070" + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 37, + "offsetZ": 0, + "fill": "#c0a060", + "width": 16, + "height": 10, + "depth": 16 + }, + { + "type": "cylinder", + "height": 10, + "r": 3, + "offsetX": 6, + "offsetY": 37, + "offsetZ": 0, + "fill": "#b09050" + }, + { + "type": "cylinder", + "height": 10, + "r": 2.5, + "offsetX": -6, + "offsetY": 37, + "offsetZ": 0, + "fill": "#b09050" + }, + { + "type": "box", + "offsetX": 8, + "offsetY": 40, + "offsetZ": 0, + "fill": "#a08040", + "width": 4, + "height": 4, + "depth": 8 + }, + { + "type": "cylinder", + "height": 3, + "r": 5, + "offsetX": 0, + "offsetY": 47, + "offsetZ": 0, + "fill": "#c0a060" + }, + { + "type": "cylinder", + "height": 4, + "r": 4, + "offsetX": 0, + "offsetY": 50, + "offsetZ": 0, + "fill": "#c0a060" + }, + { + "type": "cylinder", + "height": 3, + "r": 2.5, + "offsetX": 0, + "offsetY": 54, + "offsetZ": 0, + "fill": "#c0a060" + }, + { + "type": "cylinder", + "height": 1, + "r": 0.6, + "offsetX": 0, + "offsetY": 57, + "offsetZ": 0, + "fill": "#a08040" + }, + { + "type": "box", + "offsetX": -10, + "offsetY": 5, + "offsetZ": 0, + "fill": "#404040", + "width": 3, + "height": 14, + "depth": 6 + }, + { + "type": "box", + "offsetX": 10, + "offsetY": 5, + "offsetZ": 0, + "fill": "#404040", + "width": 3, + "height": 14, + "depth": 6 + }, + { + "type": "cylinder", + "height": 4, + "rotation": [ + 90, + 0, + 0 + ], + "r": 1.5, + "offsetX": -10, + "offsetY": 8, + "offsetZ": 0, + "fill": "#303030" + }, + { + "type": "cylinder", + "height": 4, + "rotation": [ + 90, + 0, + 0 + ], + "r": 1.5, + "offsetX": 10, + "offsetY": 8, + "offsetZ": 0, + "fill": "#303030" + } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/nozzle.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/nozzle.json new file mode 100644 index 000000000..662432276 --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/nozzle.json @@ -0,0 +1,240 @@ +{ + "id": "nozzle", + "name": "Hardened Steel Nozzle", + "partNumber": "BL-A1-NZ001", + "material": "Hardened Steel", + "quantity": 1, + "weight": 4, + "weightUnit": "g", + "baseY": 0, + "description": "0.4mm hardened steel nozzle for abrasive filament compatibility. Features precision-machined orifice, optimized internal geometry for consistent flow, and hardened surface for extended life with carbon fiber and glass-filled materials. Temperature rated to 300°C.", + "installation": { + "tools": [ + "7mm socket wrench", + "Heat-resistant gloves", + "Nozzle cleaning needle" + ], + "hardware": [], + "torque": [ + "Nozzle: 1.0 Nm (when hot at 200°C)" + ], + "notes": [ + "ALWAYS install nozzle when hot (200°C+)", + "Hand-tighten first, then final torque when heated", + "Do not overtighten - can damage threads", + "Clean threads before installation", + "Verify no filament blockage before use" + ] + }, + "geometry": [ + { + "type": "polygon", + "points": "12,5 28,5 30,10 30,18 28,22 12,22 10,18 10,10", + "fill": "#606060", + "stroke": "#404040", + "strokeWidth": 1 + }, + { + "type": "polygon", + "points": "16,22 24,22 22,32 18,32", + "fill": "#505050", + "stroke": "#404040", + "strokeWidth": 1 + }, + { + "type": "circle", + "cx": 20, + "cy": 32, + "r": 1.5, + "fill": "#303030" + } + ], + "geometry3d": [ + { + "type": "cylinder", + "height": 3, + "r": 4, + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#606060", + "width": 7.5, + "height": 5, + "depth": 6.5 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#555555", + "width": 6.5, + "height": 5, + "depth": 7.5 + }, + { + "type": "box", + "offsetX": 2.5, + "offsetY": 0, + "offsetZ": 2.5, + "fill": "#505050", + "width": 4, + "height": 5, + "depth": 4 + }, + { + "type": "box", + "offsetX": -2.5, + "offsetY": 0, + "offsetZ": 2.5, + "fill": "#505050", + "width": 4, + "height": 5, + "depth": 4 + }, + { + "type": "box", + "offsetX": 2.5, + "offsetY": 0, + "offsetZ": -2.5, + "fill": "#505050", + "width": 4, + "height": 5, + "depth": 4 + }, + { + "type": "box", + "offsetX": -2.5, + "offsetY": 0, + "offsetZ": -2.5, + "fill": "#505050", + "width": 4, + "height": 5, + "depth": 4 + }, + { + "type": "cylinder", + "height": 4, + "r": 3.2, + "offsetX": 0, + "offsetY": -4, + "offsetZ": 0, + "fill": "#555555" + }, + { + "type": "cylinder", + "height": 3, + "r": 3, + "offsetX": 0, + "offsetY": -7, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 1, + "r": 3.4, + "offsetX": 0, + "offsetY": -5, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 1, + "r": 3.3, + "offsetX": 0, + "offsetY": -6.5, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 1, + "r": 3.2, + "offsetX": 0, + "offsetY": -8, + "offsetZ": 0, + "fill": "#606060" + }, + { + "type": "cylinder", + "height": 2, + "r": 2.8, + "offsetX": 0, + "offsetY": -10, + "offsetZ": 0, + "fill": "#505050" + }, + { + "type": "cylinder", + "height": 4, + "r": 2.2, + "offsetX": 0, + "offsetY": -13, + "offsetZ": 0, + "fill": "#454545" + }, + { + "type": "cylinder", + "height": 3, + "r": 1.5, + "offsetX": 0, + "offsetY": -16, + "offsetZ": 0, + "fill": "#404040" + }, + { + "type": "cylinder", + "height": 2, + "r": 1, + "offsetX": 0, + "offsetY": -18.5, + "offsetZ": 0, + "fill": "#353535" + }, + { + "type": "cylinder", + "height": 1, + "r": 0.6, + "offsetX": 0, + "offsetY": -20, + "offsetZ": 0, + "fill": "#303030" + }, + { + "type": "cylinder", + "height": 0.5, + "r": 0.2, + "offsetX": 0, + "offsetY": -20.5, + "offsetZ": 0, + "fill": "#252525" + }, + { + "type": "cylinder", + "height": 22, + "r": 1.5, + "offsetX": 0, + "offsetY": 2, + "offsetZ": 0, + "fill": "#707070" + }, + { + "type": "cylinder", + "height": 8, + "r": 1, + "offsetX": 0, + "offsetY": -14, + "offsetZ": 0, + "fill": "#606060" + } + ] +} diff --git a/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/toolhead-board.json b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/toolhead-board.json new file mode 100644 index 000000000..29cebd53c --- /dev/null +++ b/exploded-diagrams/public/packages/3d-printers/bambu-lab/a1/printhead/parts/toolhead-board.json @@ -0,0 +1,384 @@ +{ + "id": "toolhead-board", + "name": "Toolhead Control PCB", + "partNumber": "BL-A1-TB001", + "material": "FR4/Electronic Components", + "quantity": 1, + "weight": 15, + "weightUnit": "g", + "baseY": 0, + "description": "Integrated toolhead control board managing all printhead functions including stepper motor control, heater PWM, thermistor reading, fan control, and filament sensor input. Features CAN bus communication for high-speed data transfer with main controller.", + "installation": { + "tools": [ + "2mm hex key", + "Phillips screwdriver", + "ESD wrist strap" + ], + "hardware": [ + "M2x4 socket head cap screw x4", + "Ribbon cable", + "Connector clips" + ], + "torque": [ + "PCB mounting screws: 0.15 Nm" + ], + "notes": [ + "Handle with ESD precautions - sensitive electronics", + "Disconnect power before installation", + "Verify all connectors are fully seated", + "Check for shorts before powering on", + "Do not overtighten screws - can crack PCB" + ] + }, + "geometry": [ + { + "type": "rect", + "x": 5, + "y": 5, + "width": 50, + "height": 30, + "fill": "#1a4d1a", + "stroke": "#0d260d", + "strokeWidth": 1 + }, + { + "type": "rect", + "x": 10, + "y": 10, + "width": 8, + "height": 8, + "fill": "#303030" + }, + { + "type": "rect", + "x": 22, + "y": 10, + "width": 12, + "height": 6, + "fill": "#f0f0f0" + }, + { + "type": "rect", + "x": 38, + "y": 8, + "width": 14, + "height": 10, + "fill": "#202020" + }, + { + "type": "circle", + "cx": 8, + "cy": 8, + "r": 2, + "fill": "#c0a060" + }, + { + "type": "circle", + "cx": 52, + "cy": 8, + "r": 2, + "fill": "#c0a060" + }, + { + "type": "circle", + "cx": 8, + "cy": 32, + "r": 2, + "fill": "#c0a060" + }, + { + "type": "circle", + "cx": 52, + "cy": 32, + "r": 2, + "fill": "#c0a060" + } + ], + "geometry3d": [ + { + "type": "box", + "offsetX": 0, + "offsetY": 0, + "offsetZ": 0, + "fill": "#1a4d1a", + "width": 55, + "height": 1.6, + "depth": 35 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 0.8, + "offsetZ": 0, + "fill": "#2a5d2a", + "width": 54, + "height": 0.1, + "depth": 34 + }, + { + "type": "box", + "offsetX": -18, + "offsetY": 2, + "offsetZ": -8, + "fill": "#303030", + "width": 8, + "height": 3, + "depth": 8 + }, + { + "type": "box", + "offsetX": -18, + "offsetY": 3.5, + "offsetZ": -8, + "fill": "#404040", + "width": 6, + "height": 0.5, + "depth": 6 + }, + { + "type": "box", + "offsetX": -5, + "offsetY": 2, + "offsetZ": -10, + "fill": "#252525", + "width": 6, + "height": 2, + "depth": 4 + }, + { + "type": "box", + "offsetX": 3, + "offsetY": 2, + "offsetZ": -10, + "fill": "#252525", + "width": 6, + "height": 2, + "depth": 4 + }, + { + "type": "box", + "offsetX": 15, + "offsetY": 2, + "offsetZ": -5, + "fill": "#202020", + "width": 16, + "height": 6, + "depth": 10 + }, + { + "type": "box", + "offsetX": 15, + "offsetY": 5, + "offsetZ": -5, + "fill": "#f0f0f0", + "width": 14, + "height": 4, + "depth": 8 + }, + { + "type": "box", + "offsetX": 11, + "offsetY": 6, + "offsetZ": -5, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": 13, + "offsetY": 6, + "offsetZ": -5, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": 15, + "offsetY": 6, + "offsetZ": -5, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": 17, + "offsetY": 6, + "offsetZ": -5, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": 19, + "offsetY": 6, + "offsetZ": -5, + "fill": "#c0a060", + "width": 1, + "height": 3, + "depth": 1 + }, + { + "type": "box", + "offsetX": -20, + "offsetY": 2, + "offsetZ": 8, + "fill": "#202020", + "width": 8, + "height": 4, + "depth": 6 + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 2, + "offsetZ": 8, + "fill": "#202020", + "width": 6, + "height": 3, + "depth": 5 + }, + { + "type": "box", + "offsetX": 4, + "offsetY": 2, + "offsetZ": 8, + "fill": "#202020", + "width": 6, + "height": 3, + "depth": 5 + }, + { + "type": "box", + "offsetX": 16, + "offsetY": 2, + "offsetZ": 10, + "fill": "#202020", + "width": 6, + "height": 3, + "depth": 5 + }, + { + "type": "box", + "offsetX": -15, + "offsetY": 2, + "offsetZ": 0, + "fill": "#505050", + "width": 4, + "height": 2, + "depth": 4 + }, + { + "type": "cylinder", + "height": 3, + "r": 2, + "offsetX": -15, + "offsetY": 3, + "offsetZ": 0, + "fill": "#404040" + }, + { + "type": "box", + "offsetX": -8, + "offsetY": 2, + "offsetZ": 0, + "fill": "#606060", + "width": 3, + "height": 1.5, + "depth": 3 + }, + { + "type": "box", + "offsetX": 0, + "offsetY": 2, + "offsetZ": 0, + "fill": "#303030", + "width": 2, + "height": 1, + "depth": 4 + }, + { + "type": "cylinder", + "height": 2, + "r": 1.6, + "offsetX": -24, + "offsetY": 0, + "offsetZ": -14, + "fill": "#c0a060" + }, + { + "type": "cylinder", + "height": 2, + "r": 1.6, + "offsetX": 24, + "offsetY": 0, + "offsetZ": -14, + "fill": "#c0a060" + }, + { + "type": "cylinder", + "height": 2, + "r": 1.6, + "offsetX": -24, + "offsetY": 0, + "offsetZ": 14, + "fill": "#c0a060" + }, + { + "type": "cylinder", + "height": 2, + "r": 1.6, + "offsetX": 24, + "offsetY": 0, + "offsetZ": 14, + "fill": "#c0a060" + }, + { + "type": "box", + "offsetX": 5, + "offsetY": 2, + "offsetZ": -12, + "fill": "#ff0000", + "width": 3, + "height": 1.5, + "depth": 2 + }, + { + "type": "box", + "offsetX": 10, + "offsetY": 2, + "offsetZ": -12, + "fill": "#00ff00", + "width": 3, + "height": 1.5, + "depth": 2 + }, + { + "type": "box", + "offsetX": -5, + "offsetY": 1.6, + "offsetZ": 4, + "fill": "#c0a060", + "width": 30, + "height": 0.1, + "depth": 0.5 + }, + { + "type": "box", + "offsetX": -10, + "offsetY": 1.6, + "offsetZ": -4, + "fill": "#c0a060", + "width": 20, + "height": 0.1, + "depth": 0.5 + } + ] +}