DEMO HERE: https://coding-mechanism.github.io/nonPlanarPostProcessor/
minimal non planar post processor, experimental
Only works with prusaSlicer for now
You need Exclude Object definitions enabled in prusaSlicer, and verbose Gcode enabled (ex ";LAYER CHANGE").
The Hard part:
First in CAD you create a ~0.2mm surface that lies on top of your part. It will be the non-planar surface. Then you export and slice it in prusaSlicer on its side:
 
Then in CAD you export the rest of the object excluding that top surface, and slice it like normal
 
Upload both files into script:
 
It rotates and centers the top surface on top of the rest of the object. Also changes the gcode paths to zig zag on the top surface instead of moving through the object on travel moves
