Skip to content

Commit 274e445

Browse files
Fix missing chunks in Bambu Studio preview + print quality
Don't store travel line reference during wipe blocks. Previously, BrickLayers would replace travel lines inside WIPE_START/WIPE_END with Travel Fix Up moves, breaking the wipe sequence and causing: 1. Missing chunks in Bambu Studio's G-code preview renderer 2. Incomplete nozzle wipe at brick layer transitions (print quality) One-line fix: added 'and not feature.wiping' check at line 2188. The Orca Slicer format was unaffected because its wipe handling doesn't produce the same travel pattern. Updated PR description with this fix.
1 parent 6d0d649 commit 274e445

35 files changed

+3369078
-1
lines changed

EXTRA_SCRIPTS.md

Lines changed: 169 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,169 @@
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

Comments
 (0)