Thanks to @JulianTodd, I've explored this a bit further. I have a hacked up script--attached--that has allowed me to play with mesh offsetting. It takes a minute or more to run the attached model. This is not optimized.
In short, a 2d Path-FeatureArea is attached to the stock top.
- The wire is discretized by distance generating a list of Points
The Job model is converted to a suitable resolution mesh
The negative Normal facets are excluded for 3d
For each Point, Mesh.nearestFacetOnRay(pt,vec) returns the intersect facet index and point with the job model
Here, the model has been sampled, and the set can be further re-sampled to offset the Z of the path at each
To calculate the offset points, I've explored two strategies so far. only end mill initially. The model I've tested is complex enough to have overhangs cylinder, cone, and vertical and horizontal concave face intersections.
First, I re-sampled the data-set with a FIFO matching the tool diameter. The results were surprisingly good, though had errors because due the lack of sampling width. It was relatively fast, but the outer edges would be gouged by errors as seen here in some areas.
Second, I re-sampled the data-set and calculated the xy distance from each point against all others, generating the set of z values under the tool tip. The max of the set is used for the Z height in the result--each XY point from the central point. This takes longer but provides significantly better results.
The most efficient re-sampling strategy determines the highest-z value for all z-value sample points within the tool radius. Perhaps a rastor approach might be better to limit the point set search.