commit 25628aa4a4c1507fe808938a75f9a3c529ecbe10 Author: Bernd Mueller Date: Sun Apr 5 11:08:36 2026 +0200 first push diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..0ee7051 --- /dev/null +++ b/Readme.md @@ -0,0 +1,76 @@ +# Atari & Firebee Shopping Trolley Key (Multi-Material) + +A high-quality, ergonomic shopping trolley chip (23mm diameter) featuring the iconic **Atari** and **Firebee** logos. This project is specifically designed for multi-material 3D printers like the **Flashforge Adventurer 5M Pro (AD5X)** or printers equipped with an AMS/MMU. + +## 🚀 Overview + +This OpenSCAD project generates a "key-style" trolley chip. Unlike a simple round coin, this design includes a 45mm handle for easy insertion and removal from trolley slots. It supports up to **4 different colors** in a single print. + +### Features +- **Front Side:** Deep-engraved Atari Logo. +- **Back Side:** Deep-engraved Firebee Logo. +- **Handle:** Customized "logo_text.svg" inlay and a 5mm keychain hole. +- **Parametric Design:** Fully adjustable via OpenSCAD. +- **Optimized for AD5X:** Designed to be printed with the first layer facing the bed for a perfectly smooth logo finish. + +--- + +## 🛠 Print Settings (Optimized for 0.4mm Nozzle) + +To achieve the best results with the fine logo details, use the following settings: + +| Parameter | Recommended Value | +| :--- | :--- | +| **Layer Height** | 0.15mm (0.2mm for First Layer) | +| **Wall Loops** | 4 (Important for handle strength) | +| **Top/Bottom Shells** | 5 | +| **Infill** | 30% (Gyroid or Honeycomb) | +| **First Layer Speed** | 15–20 mm/s (Slow is critical for inlays) | +| **Z-Hop** | 0.4mm | +| **Prime Tower** | Enabled (Prevents color bleeding) | + +--- + +## 📖 How to Use + +### 1. Preparation +Place your SVG files in the same folder as the `.scad` file: +- `logo_atari.svg` +- `logo_firebee.svg` +- `logo_text.svg` + +### 2. Exporting STLs +In OpenSCAD, use the `export_mode` variable to render and export the four individual parts: +1. `chip` -> `base.stl` (The main body) +2. `atari` -> `inlay_atari.stl` +3. `firebee` -> `inlay_firebee.stl` +4. `text` -> `inlay_text.stl` + +### 3. Slicing (Crucial Step) +1. Import **all 4 STLs** into your slicer at once. +2. When prompted: **"Load as a single object with multiple parts?"**, select **YES**. +3. Ensure the parts are merged/grouped correctly in the object list. +4. **Check the Preview:** Look at Layer 1. Ensure the slicer isn't "over-printing" the logos with the base color. The base should leave exact gaps for the inlays. + +### 4. Color Selection +For maximum contrast, we recommend: +- **Base:** Black or Dark Grey +- **Atari Logo:** Red or White +- **Firebee Logo:** Pink or Orange +- **Handle Text:** Light Blue or Lime Green + +--- + +## 📸 Screenshot Mode +The code includes a built-in toggle for documentation. Set `show_screenshot_view = true;` in OpenSCAD to see a perfectly centered, side-by-side view of both the front and back of the key. + +--- + +## 📜 License +This project is licensed under **Creative Commons - Attribution - Non-Commercial - Share Alike (CC-BY-NC-SA)**. +- **Attribution:** You must give appropriate credit. +- **Non-Commercial:** You may not use the material for commercial purposes. +- **ShareAlike:** If you remix, transform, or build upon the material, you must distribute your contributions under the same license. + +--- +*Created with OpenSCAD - Optimized for the Atari & Firebee community.* diff --git a/chip.scad b/chip.scad new file mode 100644 index 0000000..20373cb --- /dev/null +++ b/chip.scad @@ -0,0 +1,77 @@ +// Version 2.2.0 +// Changelog: +// 1.9.0: Fix für Mesh-Fehler und Zentrierungs-Offset (Y+2 bei Atari) +// 2.1.0: Multi-Material-Modus für AD5X +// 2.2.0: Optimierung der Logo-Tiefe auf 0.6mm und Finalisierung + +$fn = 100; + +// --- EXPORT-STEUERUNG --- +// Ändere diesen Wert für den jeweiligen STL-Export: +// "vorschau" -> Zeigt alles farbig an +// "chip" -> Basis mit Aussparungen (Exportieren als chip.stl) +// "atari" -> Nur die Füllung oben (Exportieren als atari.stl) +// "firebee" -> Nur die Füllung unten (Exportieren als firebee.stl) +modus = "vorschau"; + +// --- Parameter --- +chip_radius = 11.625; +chip_hoehe = 2.4; +logo_tiefe = 0.6; +max_logo_mass = (chip_radius * 2) * 0.75; + +// --- Logo Module (2D Definitionen) --- + +module logo_atari() { + render() + translate([0, 2, 0]) // Dein manueller Y-Offset + resize([max_logo_mass, max_logo_mass, 0], auto=true) { + offset(delta = 0.01) + import("atari_logo.svg", center = true); + } +} + +module logo_firebee() { + render() + mirror([1, 0, 0]) + resize([max_logo_mass, max_logo_mass, 0], auto=true) { + offset(delta = 0.01) + import("firebee.svg", center = true); + } +} + +// --- Konstruktion --- + +// 1. Der Chip-Körper (Die Form mit den "Löchern") +if (modus == "vorschau" || modus == "chip") { + difference() { + color("Grey") + cylinder(h = chip_hoehe, r = chip_radius, center = true); + + // Aussparung für Atari oben + translate([0, 0, chip_hoehe/2 - logo_tiefe + 0.01]) + linear_extrude(height = logo_tiefe + 0.1, convexity = 10) + logo_atari(); + + // Aussparung für Firebee unten + translate([0, 0, -chip_hoehe/2 - 0.1]) + linear_extrude(height = logo_tiefe + 0.1, convexity = 10) + logo_firebee(); + } +} + +// 2. Das Atari-Inlay (Die Füllung für oben) +if (modus == "vorschau" || modus == "atari") { + color("Cyan") + translate([0, 0, chip_hoehe/2 - logo_tiefe]) + linear_extrude(height = logo_tiefe, convexity = 10) + logo_atari(); +} + +// 3. Das Firebee-Inlay (Die Füllung für unten) +if (modus == "vorschau" || modus == "firebee") { + color("Orange") + translate([0, 0, -chip_hoehe/2]) + linear_extrude(height = logo_tiefe, convexity = 10) + logo_firebee(); +} \ No newline at end of file diff --git a/chip_handle.scad b/chip_handle.scad new file mode 100644 index 0000000..216d8ae --- /dev/null +++ b/chip_handle.scad @@ -0,0 +1,180 @@ +/* +================================================================================ +ATARI & FIREBEE SHOPPING TROLLEY KEY (Multi-Material Edition) +Version: 3.2.0 +License: Creative Commons - Attribution - Non-Commercial - Share Alike (CC-BY-NC-SA) +================================================================================ + +USER MANUAL: +1. Ensure the following SVG files are in the same folder as this .scad file: + - logo_atari.svg (Front side of the round chip) + - logo_firebee.svg (Back side of the round chip) + - logo_text.svg (Back side on the handle/grip) +2. Use the 'export_mode' variable below to switch between parts for export. + +3. For a multi-color print on the AD5X: + - Set export_mode = "chip"; -> Render (F6) -> Export STL as 'base.stl' + - Set export_mode = "atari"; -> Render (F6) -> Export STL as 'inlay_atari.stl' + - Set export_mode = "firebee"; -> Render (F6) -> Export STL as 'inlay_firebee.stl' + - Set export_mode = "text"; -> Render (F6) -> Export STL as 'inlay_text.stl' + +4. Import all 4 STLs into your slicer (e.g., OrcaSlicer) simultaneously. + +5. When asked "Load as a single object with multiple parts?", select YES. + +6. Assign your 4 filaments to the respective parts. + +OPTIMAL PRINT SETTINGS (0.4mm Nozzle): +- Layer Height: 0.15mm (0.2mm for first layer) +- Wall Loops: 4 (Crucial for mechanical strength of the chip and keyhole) +- Top/Bottom Shells: 5 +- Infill: 30% (Gyroid or Honeycomb recommended) +- First Layer Speed: 15-20 mm/s (Slow is vital for the fine inlays on the bed) +- Cooling: 100% after layer 2 +- Prime Tower: Enabled (To prevent color bleeding between the 4 colors) +- Z-Hop: 0.4mm (Prevents the nozzle from scarring finished color areas) +================================================================================ +*/ + +// --- GLOBAL SETTINGS --- +$fn = 100; // Detail level for circular geometries + +// --- EXPORT CONTROL --- +// "preview" -> Visualizes all colors together +// "chip" -> The main body with all hollowed-out pockets +// "atari" -> The inlay for the front Atari logo +// "firebee" -> The inlay for the back Firebee logo +// "text" -> The inlay for the text on the handle +export_mode = "preview"; + +// --- DIMENSIONS & PARAMETERS --- +chip_radius = 11.5; // Standard 23mm diameter +chip_height = 2.4; // Total thickness +logo_depth = 0.6; // Depth of the engravings (approx. 4 layers at 0.15mm) +max_logo_size = (chip_radius * 2) * 0.70; // Scaling factor for round logos + +// Handle (Grip) Parameters +handle_length = 45; // Length from the bottom edge of the chip to the end +handle_width = 16; // Width of the rectangular grip +handle_corner_radius = 3; +taper_start_y = -7.5; // Y-coordinate where the chip begins to taper into the handle +hole_diameter = 5; +hole_offset_bottom = 7; // Hole center distance from the bottom edge + +// Margin & Spacing for handle text +handle_margin = 2; +hole_clearance = 2; // Space between the hole and the text +taper_clearance = 2; // Space before the handle tapers into the chip + +// --- FILENAMES --- +file_atari = "logo_atari.svg"; +file_firebee = "logo_firebee.svg"; +file_text = "logo_text.svg"; + +// --- CALCULATIONS FOR TEXT PLACEMENT --- +hole_top_edge_y = (-chip_radius - handle_length + hole_offset_bottom) + (hole_diameter/2); +text_limit_bottom = hole_top_edge_y + hole_clearance; +text_limit_top = taper_start_y - taper_clearance; +available_text_length = abs(text_limit_top - text_limit_bottom); +text_y_position = text_limit_bottom + (available_text_length / 2); + + +// --- LOGO MODULES (2D DEFINITIONS) --- + +module module_logo_atari() { + render() + translate([0, 2, 0]) // Manual alignment for specific SVG geometry + resize([max_logo_size, max_logo_size, 0], auto=true) + offset(delta = 0.01) // Closes paths to prevent mesh errors + import(file_atari, center = true); +} + +module module_logo_firebee() { + render() + // Mirroring on the Y-axis (vertical) so it "flies up" on the back side + // mirror([0, 1, 0]) + resize([max_logo_size, max_logo_size, 0], auto=true) + offset(delta = 0.01) + import(file_firebee, center = true); +} + +module module_logo_text() { + render() + mirror([1, 0, 0]) // Mirror for correct legibility on the bottom side + rotate([0, 0, 90]) // Rotate to align with handle axis + // Resize to fit perfectly within calculated handle area + resize([available_text_length, handle_width - (2 * handle_margin), 0], auto=true) + offset(delta = 0.01) + import(file_text, center = true); +} + +// --- GEOMETRY MODULES --- + +module module_handle_shape() { + difference() { + hull() { + // Chord calculation: circle width at taper start point + chord_length = 2 * sqrt(pow(chip_radius, 2) - pow(taper_start_y, 2)); + translate([-chord_length/2, taper_start_y - 0.1, -chip_height/2]) + cube([chord_length, 0.1, chip_height]); + + // Rounded end of the handle + end_y_pos = -chip_radius - handle_length + handle_corner_radius; + translate([-(handle_width/2 - handle_corner_radius), end_y_pos, 0]) + cylinder(h = chip_height, r = handle_corner_radius, center = true); + translate([(handle_width/2 - handle_corner_radius), end_y_pos, 0]) + cylinder(h = chip_height, r = handle_corner_radius, center = true); + } + // Keyhole subtraction + translate([0, -chip_radius - handle_length + hole_offset_bottom, 0]) + cylinder(h = chip_height + 2, r = hole_diameter/2, center = true); + } +} + + +// --- FINAL ASSEMBLY --- + +// 1. MAIN KEY BODY (Chip and handle with engraved pockets) +if (export_mode == "preview" || export_mode == "chip") { + difference() { + union() { + color("Grey") cylinder(h = chip_height, r = chip_radius, center = true); + color("Grey") module_handle_shape(); + } + // Pocket for Atari (Top) + translate([0, 0, chip_height/2 - logo_depth + 0.01]) + linear_extrude(height = logo_depth + 0.1, convexity = 10) + module_logo_atari(); + + // Pocket for Firebee (Bottom) + translate([0, 0, -chip_height/2 - 0.1]) + linear_extrude(height = logo_depth + 0.1, convexity = 10) + module_logo_firebee(); + + // Pocket for Text (Bottom) + translate([0, text_y_position, -chip_height/2 - 0.1]) + linear_extrude(height = logo_depth + 0.1, convexity = 10) + module_logo_text(); + } +} + +// 2. ATARI INLAY (Top Color) +if (export_mode == "preview" || export_mode == "atari") { + color("Cyan") translate([0, 0, chip_height/2 - logo_depth]) + linear_extrude(height = logo_depth, convexity = 10) + module_logo_atari(); +} + +// 3. FIREBEE INLAY (Bottom Color A) +if (export_mode == "preview" || export_mode == "firebee") { + color("Orange") translate([0, 0, -chip_height/2]) + linear_extrude(height = logo_depth, convexity = 10) + module_logo_firebee(); +} + +// 4. HANDLE TEXT INLAY (Bottom Color B) +if (export_mode == "preview" || export_mode == "text") { + color("Lime") translate([0, text_y_position, -chip_height/2]) + linear_extrude(height = logo_depth, convexity = 10) + module_logo_text(); +} \ No newline at end of file diff --git a/logo_atari.svg b/logo_atari.svg new file mode 100644 index 0000000..2e3c0e0 --- /dev/null +++ b/logo_atari.svg @@ -0,0 +1,54 @@ + + + + + + + + + + + + diff --git a/logo_firebee.svg b/logo_firebee.svg new file mode 100644 index 0000000..d5c9ce5 --- /dev/null +++ b/logo_firebee.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + diff --git a/logo_text.svg b/logo_text.svg new file mode 100644 index 0000000..679563f --- /dev/null +++ b/logo_text.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/side-by-side.png b/side-by-side.png new file mode 100644 index 0000000..0313a75 Binary files /dev/null and b/side-by-side.png differ