GCodeZAA
This is a GCode post-processing script to enable smooth(-ish) non-planar top surfaces
Install / Use
/learn @Theaninova/GCodeZAAREADME
GCodeZAA
UPDATES:
Thanks to the coverage by CNC Kitchen this idea has been getting a lot more attention.
- ~~@mnott has started a Pull Request to OrcaSlicer~~ the pull request was taken over by @adob and is being welcomed by @SoftFever, builds are already available.
- @adob has implemented ZAA directly into BambuStudio
- As it turns out I'm not the first one to come up with this idea
This is a post-processing script to enable smooth(-ish) non-planar top surfaces through a process I've come to call "Z Anti-Aliasing", to differentiate it from true non-planar top surfaces. Maybe "Surface Layer Contouring" would be a better name.
This script is not super user friendly, but should be fine as a proof-of-concept to hopefully get this implemented in slicers directly.
Features
- Close to zero extra printing time cost
- Works on any model
- Works on any surface (not just the top most like many other projects)
- Sub-layer z-details. You can finally add surface textures in your 3d editor!
- Greatly improved surface finish of shallow angle surfaces
- Supports most of the slicer features
Limitations
- Only works in OrcaSlicer
- Non-planar extrusion flow is not great and needs further testing
- Overlapping/double extrusion (this might be solveable by using ironing lines)
- Random artifacts in walls (this might be solveable by using ironing lines)
- Only STLs are supported
- Requres inner/outer wall order
- Only Klipper is supported (marlin could be done with some more work)
- Layer height is less flexible towards coarse heights
Todo
- [x] Ironing support
- [x] Smooth flow transition
- [ ] Flow normalization (right now speed is kept constant)
- [ ] Travel moves!
- [ ] Overhang z contouring
- [ ] Integrate properly into OrcaSlicer
- [ ] Arc (G2/G3) support
Usage
Orca Slicer + Klipper
- Slice normally
- Create a new directory for the plate models
- For each object on the plate, right click and select "Export as one STL..." and save it as the exact object name to the directory
- Export the gcode file
- Run the script as
python gcodezaa [path to gcode] -o [path to output] -m [path to the stl directory]
You can use PrusaSlicer to preview the generated GCode, though line height and width will not be displayed properly.
Bambu Studio
Disable Arc fitting
- Note down the x and y position of your object
- Slice normally
- Create a new directory for the plate model
- Add the following to the post-processing script
python path/to/gcodezaa -m path/to/models -n object_name.stl -p x,y;
Results

Related Skills
node-connect
353.3kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.7kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
353.3kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
353.3kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
