I made a little Python script that takes a gcode file from Estlcam (or maybe other sources – but currently not that many gcode features are supported, so YMMV) and generates an OpenSCAD file which simulates the cut with an adjustable bit shape (you can adjust the bit tip angle, the diameter and the length). The cut gets subtracted from a solid representing the workpiece (by default a 1000x1000x6mm “cube”, but can be adjusted).
This should work better for some purposes than Repetier Host or Estlcam preview.
ImplicitCAD lacks the convex hull operation, so it won’t work. I also tried OpenJSCAD, but it only supports 2D convex hulls. I could write the code to generate a polyhedron representing a cutting bit path between two points directly rather than by just doing a convex hull of two cutting bit shapes, but I am not sure how well it’ll work.
IceSL is worth trying, but it will be complicated.
I agree that OpenSCAD is slow. But it’s still probably a bit faster than wasting a piece of wood on a cut that doesn’t do what one wants. The mekleth render in my screenshot takes just under 8 minutes (using Render mode; Preview mode doesn’t work well with giant subtractions). That’s because subtracting the cutting path from the solid is an enormously expensive operation.
If one wants to see just the solid cutting path (by setting workWidth to 0), one can use Preview mode and it takes 4 seconds. Here’s the cutting path render.
I tried OpenJSCAD and ImplicitCAD again with a pre-rendered cutting path, just testing the subtraction speed, and it was way slower than OpenSCAD (in fact, I let them run for about 20 minutes and gave up).
I just optimized the script for the most common use case for me: a flat-bottomed bit with most of the cuts horizontal, so I can compute the cuts at each fixed z-height with a 2D rather than 3D hull() operation and just extrude them vertically. The code reverts to the old, slower method if you have a sharp bit.