The tool is web based (based on ThreeJS and my STL model viewer plugin).
It's plugin based, so you can enable/disable feature to help reconstructing the parametric model.
Here it's some screenshot of the tool in action (and a description about how it's working):
1. You upload a STL file like this one: 2. The tool computes the convex hull and an oriented bounding box (like this): 3. The tool then transform the object so it's aligned with world axis like this: 4. Then it starts its smart job, by enumerating all sides of the object (that is, the physical planar sides of the solid). So instead of triangles like above, you know have planes with curves in them: 5. There are many heuristics going on here like converting segments on a potential arcs to an actual arc, and merging segments, and so on. This builds many curves (wire in OCCT wording) and those are collected to sketches. The sketches are then rendered with a renderer (here, it's canvas) like this: Please notice arcs (which are detected and drawn with a different color), construction lines (like angle and arc's diameter), line length and angles between them.
Right now, that's where it stops.
I plan to add the following features:
- Export to a FCStd file format. The idea would be to use OpenCascade.js to generate a BREP document per sketch (instead of the browser's canvas code here). I think it's feasible.
- Detect simple extrusion (like in the obvious example above), I think I have some heuristics that could work for this
- Detect fillet/chamfer and remove them before computing curves. I have some idea for these, for basic geometry "correction".
- Make a standalone version that could bind with my viewer so the user could ask to generate a sketch from the selected/clicked plane
For this roadmap, I'd like to get a bit more details on the FCStd file format (the minimum required to build a body with some sketches in them).