|
| 1 | +# Extra Post-Processing Scripts (from TengerTechnologies) |
| 2 | + |
| 3 | +These scripts complement the core `bricklayers.py` (GeekDetour) with additional |
| 4 | +strength-enhancing G-code post-processing techniques. All are independent — use |
| 5 | +one, combine several, or chain them as needed. |
| 6 | + |
| 7 | +Python path for slicer post-processing lines: |
| 8 | +``` |
| 9 | +/Users/gomeabde/3d-projects/.venv/bin/python |
| 10 | +``` |
| 11 | + |
| 12 | +Script directory: |
| 13 | +``` |
| 14 | +/Users/gomeabde/3d-projects/tools/BrickLayers/ |
| 15 | +``` |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +## 1. bricklayers.py (GeekDetour — core, already set up) |
| 20 | + |
| 21 | +**What it does:** Shifts alternate perimeter walls up by half a layer height, |
| 22 | +creating a brick-like interlocking pattern between layers. This is the classic |
| 23 | +"brick layers" Z-shift technique. |
| 24 | + |
| 25 | +**When to use:** Any functional part where layer adhesion / Z-axis strength |
| 26 | +matters. This is your default go-to for stronger prints. |
| 27 | + |
| 28 | +**Slicer line:** |
| 29 | +``` |
| 30 | +/Users/gomeabde/3d-projects/.venv/bin/python /Users/gomeabde/3d-projects/tools/BrickLayers/bricklayers.py -startAtLayer 3 -extrusionMultiplier 1.05 -enabled 1; |
| 31 | +``` |
| 32 | + |
| 33 | +**Required slicer settings:** |
| 34 | +- Wall Generator: Classic |
| 35 | +- Walls printing order: Inner/Outer |
| 36 | +- Arc fitting: Off |
| 37 | + |
| 38 | +--- |
| 39 | + |
| 40 | +## 2. NonPlanarInterlockingWalls.py |
| 41 | + |
| 42 | +**What it does:** Instead of a simple half-layer Z-offset, this modulates wall |
| 43 | +Z-heights with a continuous wave function (sine, triangle, trapezoidal, or |
| 44 | +sawtooth). Adjacent walls get opposite-phase waves, creating a sinusoidal |
| 45 | +interlock rather than a stepped one. Can also modulate infill independently. |
| 46 | + |
| 47 | +**When to use:** |
| 48 | +- EUC chassis protectors and power pad frames where you need maximum |
| 49 | + impact resistance — the continuous wave interlock distributes stress |
| 50 | + more evenly than stepped brick layers |
| 51 | +- Structural tri bike mounts (BTA risers, bottle cage brackets) under |
| 52 | + cyclic loading — the wave pattern resists fatigue cracking better |
| 53 | +- Any part where you want brick-layer-style benefits but with smoother |
| 54 | + surfaces (the wave is gentler than a hard Z-step) |
| 55 | + |
| 56 | +**When NOT to use:** |
| 57 | +- Parts with thin walls (<1.5mm) — the Z modulation can cause issues |
| 58 | +- Parts with lots of overhangs — the non-planar moves may conflict |
| 59 | +- Very small parts where the wave frequency doesn't have room to develop |
| 60 | + |
| 61 | +**Slicer line (walls only, conservative):** |
| 62 | +``` |
| 63 | +/Users/gomeabde/3d-projects/.venv/bin/python /Users/gomeabde/3d-projects/tools/BrickLayers/NonPlanarInterlockingWalls.py -include-perimeters -wall-amplitude 0.3 -wall-frequency 1.0 -perimeter-function sine -resolution 0.5; |
| 64 | +``` |
| 65 | + |
| 66 | +**Slicer line (walls + infill, aggressive):** |
| 67 | +``` |
| 68 | +/Users/gomeabde/3d-projects/.venv/bin/python /Users/gomeabde/3d-projects/tools/BrickLayers/NonPlanarInterlockingWalls.py -include-perimeters -include-infill -wall-amplitude 0.3 -wall-frequency 1.0 -infill-amplitude 0.4 -infill-frequency 1.1 -perimeter-function sine -infill-function sine -resolution 0.5; |
| 69 | +``` |
| 70 | + |
| 71 | +**Key parameters:** |
| 72 | +- `-wall-amplitude 0.3` — Z wave height in mm (half up, half down). Keep ≤ 50% of layer height. |
| 73 | +- `-wall-frequency 1.0` — wave cycles per mm of travel. Higher = tighter interlock but more complex toolpath. |
| 74 | +- `-perimeter-function sine` — wave shape: `sine` (smooth), `triangle` (sharp), `trapezoidal` (flat peaks), `sawtooth` |
| 75 | +- `-alternate-loops` — alternates wave phase between adjacent loops |
| 76 | +- `-resolution 0.5` — segment length in mm for the wave approximation. Lower = smoother but larger G-code. |
| 77 | + |
| 78 | +**Required slicer settings:** Same as bricklayers.py (Classic walls, Inner/Outer, no arc fitting). |
| 79 | + |
| 80 | +--- |
| 81 | + |
| 82 | +## 3. vertical_bricklayers.py |
| 83 | + |
| 84 | +**What it does:** Combines adjacent inner wall perimeters into zigzag patterns |
| 85 | +that cross between the two wall paths. Instead of two parallel walls, you get |
| 86 | +a single zigzag wall that mechanically interlocks the inner and outer wall |
| 87 | +layers laterally (in XY, not Z). |
| 88 | + |
| 89 | +**When to use:** |
| 90 | +- Parts that fail by wall delamination (inner wall separating from outer |
| 91 | + wall) rather than layer separation — e.g., thin-walled EUC mud guards |
| 92 | + that crack along wall boundaries on impact |
| 93 | +- Tube-like structures where hoop stress tries to peel walls apart |
| 94 | +- Combine with bricklayers.py for both Z and XY interlocking |
| 95 | + |
| 96 | +**When NOT to use:** |
| 97 | +- Parts where surface finish matters — the zigzag affects outer wall quality |
| 98 | +- Parts with only 2 walls (need ≥3 walls for this to work well) |
| 99 | +- Dimensionally critical parts — the zigzag slightly changes wall geometry |
| 100 | + |
| 101 | +**Slicer line:** |
| 102 | +``` |
| 103 | +/Users/gomeabde/3d-projects/.venv/bin/python /Users/gomeabde/3d-projects/tools/BrickLayers/vertical_bricklayers.py --zigzag-length 2.0; |
| 104 | +``` |
| 105 | + |
| 106 | +**Key parameters:** |
| 107 | +- `--zigzag-length 2.0` — length of each zigzag segment in mm. Shorter = more interlocking but more complex toolpath. |
| 108 | + |
| 109 | +**Required slicer settings:** Same as bricklayers.py. |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +## 4. bricklayersNonPlanarInfill.py |
| 114 | + |
| 115 | +**What it does:** Combines the TengerTechnologies brick layer Z-shifting with |
| 116 | +non-planar sine wave infill modulation in a single script. The wall shifting |
| 117 | +is simpler than GeekDetour's (no bounding box loop detection), but the |
| 118 | +non-planar infill is unique. |
| 119 | + |
| 120 | +**When to use:** Only for the non-planar infill feature — use it with |
| 121 | +`-wallReorder 0` to disable its wall shifting (use GeekDetour's instead). |
| 122 | +The non-planar infill creates wavy infill that interlocks between layers, |
| 123 | +useful for: |
| 124 | +- Large flat parts that tend to delaminate along infill boundaries |
| 125 | +- Parts where infill-to-wall bonding is the failure mode |
| 126 | +- Low-infill parts (15-25%) where you want more Z-axis strength |
| 127 | + without increasing infill percentage |
| 128 | + |
| 129 | +**Slicer line (non-planar infill only, no wall shifting):** |
| 130 | +``` |
| 131 | +/Users/gomeabde/3d-projects/.venv/bin/python /Users/gomeabde/3d-projects/tools/BrickLayers/bricklayersNonPlanarInfill.py -wallReorder 0 -nonPlanar 1 -amplitude 0.6 -frequency 1.1; |
| 132 | +``` |
| 133 | + |
| 134 | +**Key parameters:** |
| 135 | +- `-nonPlanar 1` — enable non-planar infill modulation |
| 136 | +- `-wallReorder 0` — disable wall shifting (use GeekDetour's bricklayers.py instead) |
| 137 | +- `-amplitude 0.6` — Z wave height for infill in mm |
| 138 | +- `-frequency 1.1` — wave frequency |
| 139 | + |
| 140 | +--- |
| 141 | + |
| 142 | +## Chaining Scripts |
| 143 | + |
| 144 | +You can chain multiple post-processing scripts in the slicer by putting each |
| 145 | +on its own line (or separated by `;`). They execute in order, each modifying |
| 146 | +the G-code output of the previous one. |
| 147 | + |
| 148 | +**Recommended combo for maximum strength (walls + infill):** |
| 149 | +``` |
| 150 | +/Users/gomeabde/3d-projects/.venv/bin/python /Users/gomeabde/3d-projects/tools/BrickLayers/bricklayers.py -startAtLayer 3 -extrusionMultiplier 1.05 -enabled 1; |
| 151 | +/Users/gomeabde/3d-projects/.venv/bin/python /Users/gomeabde/3d-projects/tools/BrickLayers/bricklayersNonPlanarInfill.py -wallReorder 0 -nonPlanar 1 -amplitude 0.6 -frequency 1.1; |
| 152 | +``` |
| 153 | + |
| 154 | +**⚠️ Do NOT chain bricklayers.py with NonPlanarInterlockingWalls.py** — they |
| 155 | +both modify wall Z-heights and will conflict. Pick one or the other for walls. |
| 156 | + |
| 157 | +--- |
| 158 | + |
| 159 | +## Important Notes |
| 160 | + |
| 161 | +- **Preview:** None of these show changes in the slicer preview. Export the |
| 162 | + G-code and drag it back into the slicer to verify. |
| 163 | +- **First prints:** Start with a simple test cube. Watch the first print |
| 164 | + carefully for any issues before committing to a long print. |
| 165 | +- **Non-planar Z limits:** The H2C nozzle can handle small Z variations |
| 166 | + within a layer, but keep amplitudes conservative (≤0.5mm) to avoid |
| 167 | + nozzle crashes on already-printed material. |
| 168 | +- **All scripts require:** Classic wall generator, Inner/Outer wall order, |
| 169 | + arc fitting disabled. |
0 commit comments