Recognize fillets and chamfers
A chamfer/fillet is a feature in a CAD model that is applied to remove sharp edges from a part by replacing a sharp corner intersection of two faces with an angled (chamfer) or blending (fillet) face. Chamfers/fillets are very commonly used as finishing features on a model, and maintaining their definition is desirable when making edits to the part geometry.
The recognition of fillets is available as open-source algorithm of Analysis Situs. The approach is largely based on the work by [Venkataraman et al, 2001] and continues to evolve. You can find more details on this algorithm in our paper [Slyadnev et al, 2020].
The recognition procedure for fillets and chamfers takes into account neighborhood of each candidate face. Otherwise, the cases like a chamfered cube (see below) become problematic as there is no history information to rely on:
There are the following common principles of recognition of fillet and chamfer chains:
- The first pass of the algorithm is the loxal recognition. At this stage, all the feature candidate faces are detected and marked in the AAG with a specific attribute.
- The second and subsequent recognition passes are aimed to precise the local recognition result by taking into account the neighborhoods of the candidate faces.
At the end, the recognition result can be extracted as a series of chains. At this stage, the feature faces can be filtered out by size criterion, e.g., radius for blends and width for chamfers.
Run the algorithm
Use the following command to recognize fillet chains in the active part:
Consult show-commands hints for the details on the accepted arguments.
As a result, all detected blends are selected in the viewer.
You can analyze the extracted properties by running print-attrs command while keeping the fillet faces of interest selected. This command will print all the AAG attributes with their inline properties to the Logger window.
All indices of the recognized faces are returned in the Tcl interpretor, so you can use the recognizer in batch mode.
> set ids [recognize-blends] > puts $ids
If the -store key is passed, the algorithm will extract blend chains that group all the detected blend faces by their topological connectivity and radius.