SteinWipe Motion Control - ORCA X1 User Manual
[{"type":"paragraph","children":[{"t":"text","v":"SWMC Release: ORCA_X1_SWMC_Machine_Preset_Feb.15.1.2025.3mf","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Developed On: Orca Slicer V.2.2.0","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Shipped Date: Feb.23.2025","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"Welcome","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This manual covers the ORCA_X1_SWMC_Machine_Preset_Feb.15.1.2025 release of SteinWipe Motion Control (SWMC) for the Bambu Lab X1C running Orca Slicer. This is the Orca Slicer sibling of the BBS Core 0 beta; the first formally named Core under the SWMC naming and testing system.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Unlike its BBS counterpart (which has a stable successor in Feb.15.2.2025), this Orca Core 0 release did not receive a Feb.15.2 stable successor. For Orca users running Core 0 on the X1C, this is the authoritative release. Orca Core 1 port is in development and will be added to the project when released; until then, this is the Core 0 release for Orca X1C users.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This release uses inline SteinSwitch toggles that you enable or disable by editing the gcode directly. If you are looking for the newer SteinSwitch Definitions (SSD) architecture where features are controlled via keywords in your printer notes, see the Core 1 releases on the project. Core 0 predates SSDs.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"1. What\u0026#39;s in this release","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"1.1 The big picture","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Feb.15.1.2025 is the Core 0 beta; the first release built under the newly formalized Core naming system. It established the architecture that every later Core refines. The Orca variant includes everything from the BBS sibling plus two additional gcode sections (Before Layer Change and Extrusion Role) that Orca exposes and BBS does not.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This release uses inline SteinSwitch toggles that you enable or disable by editing the gcode directly. Core 0 predates SteinSwitch Definitions (SSDs), the keyword-based control layer introduced in Core 1.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This release ships as a single .3mf file that opens directly in Orca Slicer and installs as a printer preset. Once installed, configuration happens inside the preset\u0026#39;s gcode sections.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"1.2 What\u0026#39;s new in Core 0","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Reusable wipe macro.","b":true,"i":false},{"t":"text","v":" The 41-line Template Custom G-code holds the wipe pattern. Every gcode section that needs a wipe invokes the macro with a single call instead of duplicating the full scrub motion.","b":false,"i":false}]},{"children":[{"t":"text","v":"Orca-specific Before Layer Change section.","b":true,"i":false},{"t":"text","v":" New gcode section with the add_wipe_cycle_for_specific_layer SteinSwitch; lets you trigger wipe cycles at specific layer numbers you hand-edit into the gcode.","b":false,"i":false}]},{"children":[{"t":"text","v":"Orca-specific Extrusion Role section.","b":true,"i":false},{"t":"text","v":" Handles acceleration settings based on extrusion role (perimeter, infill, etc.) for cleaner material-change transitions.","b":false,"i":false}]},{"children":[{"t":"text","v":"Chute tapping.","b":true,"i":false},{"t":"text","v":" First appearance of chute tapping in SWMC. Taps the chute door at the end of startup purge to knock down any stuck purge material.","b":false,"i":false}]},{"children":[{"t":"text","v":"Sidestepping purges.","b":true,"i":false},{"t":"text","v":" Instead of dumping filament in one spot, purging shifts from left to right for more uniform purge distribution.","b":false,"i":false}]},{"children":[{"t":"text","v":"Work light purge cycles.","b":true,"i":false},{"t":"text","v":" Turns the toolhead light on during purges so the chamber camera can see what is happening.","b":false,"i":false}]},{"children":[{"t":"text","v":"PA test line moved over QR code.","b":true,"i":false},{"t":"text","v":" Places the Pressure Advance test line over the build plate QR code for safety and consistency.","b":false,"i":false}]},{"children":[{"t":"text","v":"Completely rewritten material change code.","b":true,"i":false},{"t":"text","v":" Ground-up rewrite of AMS material switching with optimized temp timing, improved retractions, and 15-20% reduction in flushing volume.","b":false,"i":false}]},{"children":[{"t":"text","v":"Improved first layer scanning.","b":true,"i":false},{"t":"text","v":" Old routine pulled purge back into prints; Core 0 hijacks the stock routine for a clean scan.","b":false,"i":false}]},{"children":[{"t":"text","v":"User offsets at template level.","b":true,"i":false},{"t":"text","v":" Enter your wiper calibration offsets once in the Template Custom G-code section; they apply across all prints and survive updates.","b":false,"i":false}]},{"children":[{"t":"text","v":"SteinSwitch for first-layer travel optimization.","b":true,"i":false},{"t":"text","v":" Travel path from wiper exit to first layer start is smarter; reduces stringing carried onto the print.","b":false,"i":false}]}]},{"type":"heading","level":4,"children":[{"t":"text","v":"1.3 Known limitations in this beta","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"No ams_detour SteinSwitch. This was added in the BBS Feb.15.2 stable; Orca did not receive a Feb.15.2 port. If you need pre-AMS wipe routing on Orca, upgrade to Core 1 when the Orca port ships.","b":false,"i":false}]},{"children":[{"t":"text","v":"Straight-line wipe scrubbing. The Template Custom G-code uses a straight-line X-then-Y scrub pattern. The BBS Feb.15.2 stable upgraded this to arc moves; Orca did not receive that upgrade.","b":false,"i":false}]},{"children":[{"t":"text","v":"ExtrusionRoleGcode header is stale. The file\u0026#39;s content header says ;_Release_Jan.29.1.2025 from copy-forward; the filename Feb.15.1.2025 is the source of truth per the SWMC naming convention. Cosmetic only; no functional impact.","b":false,"i":false}]},{"children":[{"t":"text","v":"User-reported bugs present. Issues addressed in the BBS Feb.15.2 stable release (slicing errors in later slicer versions, nozzle-too-hot on smooth plates, motor slip after manual filament change) may be present in this Orca release as well. See Section 7 for the full list.","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"2. Before you install","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"2.1 Requirements","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"You will need a Bambu Lab X1C printer, the Orca Slicer version shown on this release\u0026#39;s card, the .3mf file linked from the release page, and a SteinWipe V1 wiper mount installed on your X1C. The wiper mount is recommended rather than strictly required; most SteinSwitches work without hardware, but the actual wiping features need something to wipe against.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"2.2 Install the wiper first, then calibrate","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"If your SteinWipe wiper mount is not yet installed, install it before running any SWMC gcode. Wiper entry XY error greater than 0.5mm can tear the wiper pad on the very first wipe cycle, so mount alignment matters.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"After the mount is installed, run the calibration gcode from the release resources to measure your mount\u0026#39;s XY offsets. Those values get entered into the Template Custom G-code section once and stay put across updates (as long as you do not re-import the preset from scratch).","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Wiper mount reference","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"wiper_mount_installed | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"SteinWipe V1 wiper mount installed on the rear panel of a Bambu Lab X1C. Mount bolted with M3 hardware through the backing plate - no tape.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"2.3 Skip calibration if","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"You ran calibration on this same wiper mount for a previous SWMC release and have not moved, unbolted, or replaced it. Or, you do not have a SteinWipe mount installed and plan to use only non-wiper features like the modified pause routine or chute tapping; the wipe features need a wiper pad to wipe against.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"3. Installing the preset","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"These steps apply to the Orca Slicer version listed on this release\u0026#39;s card.","b":false,"i":false}]},{"type":"list","listType":"ordered","items":[{"children":[{"t":"text","v":"Download the .3mf file from the release resources on the release page.","b":false,"i":false}]},{"children":[{"t":"text","v":"Open Orca Slicer.","b":false,"i":false}]},{"children":[{"t":"text","v":"Import the ORCA_X1_SWMC_Machine_Preset_Feb.15.1.2025.3mf file into Orca.","b":false,"i":false}]},{"children":[{"t":"text","v":"If prompted, choose \u0026quot;Open as Project.\u0026quot;","b":false,"i":false}]},{"children":[{"t":"text","v":"Open your printer profile settings.","b":false,"i":false}]},{"children":[{"t":"text","v":"Save this profile as a new preset so updates do not overwrite your customizations.","b":false,"i":false}]},{"children":[{"t":"text","v":"Name the new preset anything you like; something like \u0026quot;X1C SWMC Feb.15.1 Orca\u0026quot; works well.","b":false,"i":false}]},{"children":[{"t":"text","v":"Select your new preset from the printer dropdown. You are ready to slice.","b":false,"i":false}]}]},{"type":"paragraph","children":[{"t":"text","v":"The preset ships with sensible defaults already selected for every SteinSwitch. You can use it as-shipped or edit the gcode to change feature toggles (Section 5).","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Orca import step","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"orca_install_step_1_import | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Importing the .3mf file into Orca Slicer. Use the standard file import option in Orca.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Save as preset in Orca","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"orca_install_step_2_preset | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Save your imported profile as a new preset in Orca. Naming it with the core date makes updates easier later.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"4. How SteinSwitches work","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.1 The mechanism","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"A SteinSwitch is a numbered, labeled block inside the gcode that controls one feature. The feature\u0026#39;s ON\/OFF state is determined by a single word inside the block: {if true} turns the feature ON, {if false} turns it OFF.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Each SteinSwitch block starts with a comment header telling you what the feature does and how to toggle it. The shape looks like this:","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; Example SteinSwitch block","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";2 SteinSwitch wipe_before_first_z_touch - removes string from last print","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to wipe the nozzle before homing the z on startup","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to skip","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"[feature gcode runs here]","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{endif}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"To toggle this feature off, you find this block in the gcode, change {if true} to {if false}, and save the preset. On the next slice, the feature is disabled.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.2 Why this architecture","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Core 0 predates SteinSwitch Definitions (SSDs), the keyword-based architecture introduced in Core 1. Every feature in this release is controlled by editing the gcode directly. This is the baseline architecture that SWMC was built on before the SSD layer was added. Users who want the keyword-based control layer should use a Core 1 release instead; the Orca Core 1 port for X1C is in development at the time of this release and will be added to the project when available.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.3 Where to find and edit SteinSwitches","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"In Orca Slicer, open your printer preset\u0026#39;s gcode settings. There are six gcode sections that contain SteinSwitches:","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Machine Start G-code (11 SteinSwitches)","b":false,"i":false}]},{"children":[{"t":"text","v":"Change Filament G-code (3 SteinSwitches)","b":false,"i":false}]},{"children":[{"t":"text","v":"Layer Change G-code (1 SteinSwitch)","b":false,"i":false}]},{"children":[{"t":"text","v":"Before Layer Change G-code (1 SteinSwitch; Orca-only section)","b":false,"i":false}]},{"children":[{"t":"text","v":"Pause G-code (1 SteinSwitch)","b":false,"i":false}]},{"children":[{"t":"text","v":"The End G-code, Template Custom G-code, and Extrusion Role G-code sections do not contain user-toggle SteinSwitches; leave those alone.","b":false,"i":false}]}]},{"type":"paragraph","children":[{"t":"text","v":"To find a specific SteinSwitch, copy the comment header block shown in Section 5 for that SteinSwitch, paste it into your text editor\u0026#39;s find function, and it will take you directly to the SteinSwitch in the gcode.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"4.4 Rules for editing","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Only change {if true} to {if false} or vice versa; do not change other parts of the block","b":false,"i":false}]},{"children":[{"t":"text","v":"For add_wipe_cycle_for_specific_layer, the SteinSwitch also requires editing layer numbers in the nested {if layer_num==10000} placeholder; see Section 5.4 for details","b":false,"i":false}]},{"children":[{"t":"text","v":"Save the preset after any change before slicing","b":false,"i":false}]},{"children":[{"t":"text","v":"If something goes wrong, re-import the .3mf to restore defaults","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"5. SteinSwitch reference","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The full set of SteinSwitches available in this release, grouped by gcode section and in the order they appear. For each SteinSwitch, the code box shows the exact comment header as it appears in the gcode; copy and paste it into your text editor\u0026#39;s find function to jump directly to that SteinSwitch.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.1 Start G-code SteinSwitches","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Removes stringing from the last print by wiping the nozzle before the Z-axis homes. Default: ON. Recommended.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; wipe_before_first_z_touch","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";2 SteinSwitch wipe_before_first_z_touch - removes string from last print","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to to wipe the nozzle before homing the z on startup","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to skip","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Pauses the printer at startup so you can manually inspect the nozzle before printing starts. Default: OFF. Enable for critical prints or after a nozzle change.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; user_nozzle_inspection","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";3 SteinSwitch user_nozzle_inspection","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if false}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Scrapes the nozzle against the steel tab before the startup priming purge. May help with a cleaner purge. Default: ON on textured PEI plate, skipped on smooth plates.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; scrub_nozzle_before_first_purge","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";5 SteinSwitch scrub_nozzle_before_first_purge - may help with a cleaner purge","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Handles residual filament not pulled back during the previous print\u0026#39;s end. Prevents filament bits sticking to the side of the nozzle on the wipe. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; purge_for_unretracted_filament","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";6 SteinSwitch purge_for_unretracted_filament - prevents filament bits sticking to side of nozzle on swipe","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a second cleaning pass immediately before the auto bed leveling probe for cleaner ABL readings. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; secondary_nozzle_clean_before_ABL","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";7 SteinSwitch secondary_nozzle_clean_before_ABL","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a final steel-tab scrub before the main SteinWipe cycle. Helps with probe tip cleanliness for the bed level scan. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; perform_secondary_nozzle_scrub_before_steinwipe","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";8 SteinSwitch perform_secondary_nozzle_scrub_before_steinwipe (clean tip to probe for bed level)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Taps the chute door at the end of the startup purge to knock down any stuck purge material before printing starts. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; chute_tapping (in Start G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";8 SteinSwitch chute_tapping knock down any purge before starting a print","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to use chute tapping","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to skip chute tapping","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Limits the mechanical vibration test (input shaping) to only run when bed leveling is checked in the slicer. Prevents redundant tests on every print. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; mech_test_only_with_bed_cali","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";10 SteinSwitch mech_test_only_with_bed_cali","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs the mech test at the center of the printed part rather than a fixed bed location. Better shaping data for off-center prints. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; mech_test_on_part_center","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";11 SteinSwitch mech_test_on_part_center (may help with improved surface finish for off center parts)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Dynamic Auto Bed Leveling; a P1 Series firmware feature (firmware 01.06.01.02+). Not available on X1. Default: OFF. Do not enable on X1.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; use_DABL","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";12 SteinSwitch use_DABL (only works with firmware 01.06.01.02 P1 Series - not available for X1)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to use stock routine with option to modify (SteinSwitch 12)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if false}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Switches the Pressure Advance test line to a higher-accuracy routine. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; use_true_PA_test_line","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";13 SteinSwitch use_true_PA_test_line","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Validates PA test line placement before drawing. Nested inside use_true_PA_test_line; only takes effect when 13 is ON. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; safety_check_pa_line_position","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"; SteinSwitch safety_check_pa_line_position","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Optimizes the travel path from wiper exit to first layer start; reduces stringing carried onto the print. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; no_strings_to_first_layer","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";15 SteinSwitch no_strings_to_first_layer","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Numbers 1, 4, and 9 are unused in Start G-code. Numbers 4 and 9 are development fingerprints from features removed or moved during iteration. Number 1 would later be used for ams_detour in the BBS Feb.15.2 stable; that SteinSwitch was never backported to this Orca release. Safe to ignore in all cases.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.2 Change Filament G-code SteinSwitches","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"All three SteinSwitches in Change Filament G-code are numbered \u0026quot;1\u0026quot; in the gcode. Search by feature name or by the code box below rather than by number.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Clears the nozzle before each AMS tool change to prevent purge from sticking. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; quick_wipe_before_tool_change","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch quick_wipe_before_tool_change - clears nozzle to prevent purge from sticking","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Taps the chute during AMS swaps to dislodge stuck purge buildup. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; chute_tapping (in Change Filament G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch chute_tapping","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a wipe cycle on the way back to the print after AMS material change. Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; return_to_print_wipe_cycle (in Change Filament G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch return_to_print_wipe_cycle","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.3 Layer Change G-code SteinSwitch","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Runs a wipe cycle during layer changes when a wipe is needed (timing coordinated with time lapse captures). Default: ON.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; return_to_print_wipe_cycle (in Layer Change G-code)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";1 SteinSwitch return_to_print_wipe_cycle","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.4 Before Layer Change G-code SteinSwitch (Orca-only)","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Triggers a wipe cycle at specific layer numbers that you specify by hand. Useful for prints where you want a forced wipe at known trouble layers (color changes, detailed sections, post-support transitions). Default: OFF.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This SteinSwitch has TWO levels of configuration:","b":false,"i":false}]},{"type":"list","listType":"ordered","items":[{"children":[{"t":"text","v":"The outer {if true\/false} toggle (ON\/OFF for the whole feature)","b":false,"i":false}]},{"children":[{"t":"text","v":"An inner {if layer_num==10000} block where you replace the 10000 placeholders with actual layer numbers","b":false,"i":false}]}]},{"type":"paragraph","children":[{"t":"text","v":"To use: set the outer toggle to {if true}, then edit the inner placeholder to list your desired layer numbers separated by || (logical OR). For example: {if layer_num==50 || layer_num==120 || layer_num==200} triggers wipes at layers 50, 120, and 200.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; add_wipe_cycle_for_specific_layer","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";SteinSwitch add_wipe_cycle_for_specific_layer","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to enable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to disable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if false} ; toggle feature on or off","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"5.5 Pause G-code SteinSwitch","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"On resume from a print pause, the toolhead runs a wipe cycle before returning to the print. Prevents stringing on the resumed layer. Default: ON. Disable only if you have wiper alignment issues.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\u0026amp; use_steinwipe_after_pause","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";+++++++++++++++++++++++++++++","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";SteinSwitch use_steinwipe_after_pause","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;true\u0026quot; to enable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":";Set to \u0026quot;false\u0026quot; to disable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"{if true}","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/\u0026amp;","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"6. Wiper offset calibration","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"This section only applies if you have the SteinWipe V1 wiper mount installed.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"6.1 Why calibrate","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The wiper sits at a fixed position in the slicer\u0026#39;s coordinate space. Small variations in how your mount was drilled or how the mount bracket sits determine whether the nozzle enters the wiper pad cleanly or off-center. Error greater than 0.5mm can tear the wiper pad on the first wipe cycle.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"6.2 The V3 calibration workflow","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The current approach uses a single .3mf file that walks the toolhead through all 31 offset positions in sequence. The printer\u0026#39;s progress bar flashes different percentages at each position. You watch the nozzle as it moves, and when alignment looks correct, you note the progress bar value. The Offset Chart (embedded below) converts that value to an offset number.","b":false,"i":false}]},{"type":"list","listType":"ordered","items":[{"children":[{"t":"text","v":"Open SteinWipe_XY_Offset_Cali.3mf in Orca Slicer.","b":false,"i":false}]},{"children":[{"t":"text","v":"Enable the calibration routine as instructed in the .3mf notes.","b":false,"i":false}]},{"children":[{"t":"text","v":"Slice and send to the printer.","b":false,"i":false}]},{"children":[{"t":"text","v":"Watch the nozzle as the toolhead cycles through positions.","b":false,"i":false}]},{"children":[{"t":"text","v":"When the nozzle aligns correctly with the wiper, note the progress bar percentage on the display. Reference photos for correct alignment are below.","b":false,"i":false}]},{"children":[{"t":"text","v":"Look up that percentage on the Offset Chart (also below) to get the offset value.","b":false,"i":false}]},{"children":[{"t":"text","v":"Repeat for the other axis if needed.","b":false,"i":false}]},{"children":[{"t":"text","v":"Enter the X and Y offset values into the Template Custom G-code section of your printer preset on the G0 X0 Y0 line, replacing the zeros with your measured values. A screenshot of where this lives is below.","b":false,"i":false}]}]},{"type":"paragraph","children":[{"t":"text","v":"If alignment is perfect at the center position (progress bar at the zero point), leave the user offset at G0 X0 Y0 and you are done.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Correct Y axis alignment","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"cali_y_axis_aligned | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The nozzle correctly aligned on the Y axis during V3 calibration. Note this alignment and the corresponding progress bar percentage.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Correct X axis alignment","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"cali_x_axis_aligned | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The nozzle correctly aligned on the X axis during V3 calibration.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Calibration progress bar","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"calibration_progress_bar | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The printer progress bar signals the current offset position during V3 calibration. Watch the nozzle and note the percentage at the aligned position.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% V3 Offset Chart","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"offset_chart_v3 | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Convert the progress bar percentage to your offset value using this chart. Also available as a separate download from the Dev Pack.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Where to enter your offsets","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"template_custom_gcode_location | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Template Custom G-code section of your printer preset. Replace the zeros on the G0 X0 Y0 line with your measured offset values.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"6.3 When to recalibrate","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"After installing a new wiper mount","b":false,"i":false}]},{"children":[{"t":"text","v":"After replacing the wiper pad (not always required, but recommended)","b":false,"i":false}]},{"children":[{"t":"text","v":"If you unbolt and re-mount the wiper AND the mount holes were drilled oversized (the mount slides on its bolts)","b":false,"i":false}]},{"children":[{"t":"text","v":"After moving the printer if you suspect mount shift","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"7. Known issues","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"No Feb.15.2 stable successor for Orca. The BBS sibling received a Feb.15.2 stable release; this Orca release did not get a stable port. Issues addressed in BBS Feb.15.2 may persist here. When the Orca Core 1 port ships, that becomes the upgrade path for Orca users.","b":false,"i":false}]},{"children":[{"t":"text","v":"No ams_detour SteinSwitch. Added in BBS Feb.15.2 only; not backported to this Orca release.","b":false,"i":false}]},{"children":[{"t":"text","v":"Straight-line wipe scrubbing. The Template Custom G-code uses a straight-line X-then-Y scrub pattern. The BBS Feb.15.2 stable upgraded this to arc moves; Orca did not receive that upgrade.","b":false,"i":false}]},{"children":[{"t":"text","v":"ExtrusionRoleGcode header is stale. The file\u0026#39;s content header says ;_Release_Jan.29.1.2025 from copy-forward; the filename Feb.15.1.2025 is the source of truth.","b":false,"i":false}]},{"children":[{"t":"text","v":"G07 typo in Layer Change G-code. Lines 23 and 26 contain G07 where G17 (XY-plane select) is intended. Cosmetic; firmware treats unknown G-codes as no-ops, so no functional impact.","b":false,"i":false}]},{"children":[{"t":"text","v":"SteinSwitch numbering has duplicates. In Start G-code, SteinSwitches 8a and 8b share the number \u0026quot;8\u0026quot;. In Change Filament G-code, three SteinSwitches all share the number \u0026quot;1\u0026quot;. When searching the gcode, use the feature name or the code boxes in Section 5 rather than the number.","b":false,"i":false}]},{"children":[{"t":"text","v":"SteinSwitches 4 and 9 are missing from Start G-code. Development fingerprints from features removed or moved during iteration.","b":false,"i":false}]},{"children":[{"t":"text","v":"add_wipe_cycle_for_specific_layer has placeholder layer numbers. The inner {if layer_num==10000} block ships with 10000 as a placeholder. You must replace these with actual layer numbers for the feature to trigger at meaningful points in your prints.","b":false,"i":false}]},{"children":[{"t":"text","v":"Wiper pad damage from bad offset. Always run the offset calibration (Section 6) before your first wipe cycle on a newly installed mount. XY error greater than 0.5mm can rip the wiper pad on the first wipe.","b":false,"i":false}]},{"children":[{"t":"text","v":"Oversized mount holes force repeat calibration. If the mount holes were drilled oversized during installation, the mount will slide on its bolts and need recalibration every time it is unbolted. Correctly sized holes let the mount return to the same position when re-mounted.","b":false,"i":false}]}]},{"type":"heading","level":2,"children":[{"t":"text","v":"8. Reporting bugs","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Issues with this release go to ","b":false,"i":false},{"t":"link","v":"the Leckiestein Discord bug reporting channel for Core Feb.15.1","url":"https:\/\/discord.com\/channels\/1327182397673832448\/1343739548198371338","target":""},{"t":"text","v":". Include a video of the issue, a 3MF diagnostic file (see Discord #faq for how to generate one), and the specific SteinSwitch states (which are ON and which are OFF) when the issue occurred.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"% Discord bug channel example","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"discord_bug_channel_example | scale=100 | caption=bottom","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Leckiestein Discord bug reporting channels. Each SWMC core family has its own channel; post your bug report in the channel matching the core you are running.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"\/%","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"9. What\u0026#39;s next","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"The Orca Core 1 port for X1C is in development at the time of this release. When shipped, it brings the SteinSwitch Definition (SSD) architecture to Orca users; configuration via keywords in printer notes rather than inline code editing. It also expands the feature set substantially (54 SSDs vs 18 SteinSwitches here) with new capabilities like SteinRetraction variants, chute tapping aggression levels, purge flow percentage control, and automated wipe cadences.","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"For users looking ahead to the next generation: Core 2 (Apr.28.1.2026) introduces SteinWipe User Definitions (SWUDs) for numeric parameter control, and SteinWipe Pro hardware integration. Orca Slicer is the lead slicer for Core 2 since SWUDs require Orca\u0026#39;s global variable support. See Dev Pack Pro 2026 for full Core 2 access.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"10. Licence and liability","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"SWMC modifies printer motion and startup behavior via slicer-level G-code. Use of this profile is at the user\u0026#39;s own risk. The user\/operator assumes full responsibility for machine operation, monitoring, and all outcomes. Leckiestein shall not be held liable for damage, injury, or losses resulting from use, misuse, or modification of this profile preset.","b":false,"i":false}]},{"type":"heading","level":2,"children":[{"t":"text","v":"11. ","b":false,"i":false},{"t":"link","v":"Terms and conditions","url":"https:\/\/leckiestein.com\/policies\/terms-of-service","target":""},{"t":"text","v":"","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"By purchasing or downloading this release, you agree to the Leckiestein Terms and Conditions for Digital Products, effective January 1, 2025.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.1 Usage rights","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"Your purchase grants you a ","b":false,"i":false},{"t":"text","v":"personal, non-transferable, non-exclusive license","b":true,"i":false},{"t":"text","v":" to use this release. You may download and use the files for your personal projects, and modify the gcode for your own use.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.2 Not allowed","b":false,"i":false}]},{"type":"list","listType":"unordered","items":[{"children":[{"t":"text","v":"Reselling, redistributing, or sharing the .3mf or its embedded gcode","b":false,"i":false}]},{"children":[{"t":"text","v":"Uploading the files to public or private repositories","b":false,"i":false}]},{"children":[{"t":"text","v":"Selling physical items produced from the files without a Tier 3+ commercial license","b":false,"i":false}]}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.3 Commercial use","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"If you wish to use this release for commercial purposes, you must subscribe to the Pro Maker License Tier (Tier 3+ on Patreon) or purchase a separate commercial license. Any unauthorized commercial use is a violation of these terms.","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.4 Non-refundable","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"All digital product sales are final and non-refundable once the files have been downloaded. If you experience technical issues or believe a product has an error, contact Leckiestein via direct messages for assistance (not in comment threads).","b":false,"i":false}]},{"type":"heading","level":4,"children":[{"t":"text","v":"11.5 Copyright","b":false,"i":false}]},{"type":"paragraph","children":[{"t":"text","v":"All intellectual property rights to this release remain with Leckiestein. Any infringement of these rights may result in legal action.","b":false,"i":false}]}]
[{"base":"cali_y_axis_aligned","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/cali_y_axis_aligned.jpg?v=1777948631\u0026width=2400","width":512,"height":512},{"base":"offset_chart_v3","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/offset_chart_v3.png?v=1776879866\u0026width=2400","width":800,"height":926},{"base":"template_custom_gcode_location","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/template_custom_gcode_location.png?v=1776879798\u0026width=2400","width":1774,"height":838},{"base":"discord_bug_channel_example","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/discord_bug_channel_example.png?v=1776891401\u0026width=2400","width":740,"height":276},{"base":"wiper_mount_installed","url":"https:\/\/leckiestein.com\/cdn\/shop\/files\/wiper_mount_installed.jpg?v=1776877683\u0026width=2400","width":4032,"height":2268}]