In our early paper devoted to feature recognition, we described a simple approach for finding isolated holes, pockets, and general cavities using the Attributed Adjacency Graph and some other heuristics. It appears that not so many tools exist which can serve as a basis for developing this sort of algorithms. Our Analysis Situs contributes to the feature recognition field by making some basic data structures and heuristics (such as dihedral angles) publicly available. At the same time, some questions remain, and in this blog post, the following question is answered (reformulated for brevity by me):
"How can I reproduce the research result from your paper? Using Analysis Situs, I can dump AAG to JSON, but that seems to be not enough for full feature recognition. E.g., one of the basic heuristics you use is the number of contours in a face, but this information is not available in AAG."
Yes, if AAG is dumped to JSON, the basic heuristics it provides may not be enough to develop a general-purpose feature recognizer. In our paper, we use several shape descriptors, not AAG only. In fact, AAG was a supplementary data structure serving as a carrier for dihedral angle types and the valence of faces.
If you want to use AAG as the only shape descriptor (that's a good idea if you develop your feature recognizer as an independent tool having no link to any specific geometric kernel), you need to enrich it with as much knowledge of a shape as possible. In our paper, we used a notion of "base face," which is a face having an internal loop. It is possible to add information about the base faces to the AAG by assigning the corresponding attributes to its nodes. The new "recognize-base-faces" command will do that, as shown in the following animation.
The development version of Analysis Situs with the new "recognize-base-faces" command can be downloaded from here.