Manifold Geometry // Многообразная Геометрия

Вопросы от читателей, часть 2

Удивительно, но нас читают и за кордоном. Воистину, гугл-транслятор способствует международному общению.

If I choose flat face or cylindrical face, how can I know the properties of the selected face?

Once you have a face, you can get its geometry via BRep_Tool::Surface(). Notice that in OpenCascade there is a clear separation between geometry and topology. The topology (TopoDS packages) gives only the structure, while geometry (Geom and Geom2d packages) brings up the form. BRep_Tool utility allows you switching from topology to geometry.

Could you please explain about implementing feature recognition using OpenCascade? Just take an example, by using rule based method. Actually, I will do interactive (not automatic) feature recognition using Rule-based method. So the user interactively chooses some part's features to define a machining feature. For example,

IF STEP data model contain 2 circular edges and circular faces

AND the planar surface is bounded by two circular edge loops (inner loop and outer loop)

THEN the feature is identified as through hole.

A kind of traditional feature recognition based on Boundary Representation (B-Rep) can benefit from the usage of Attributed Adjacency Graph. You can find the original article by Joshi, 1988, explaining the concept. The idea is shortly as follows.

You first build the AAG structure storing the neighborhood information for the faces. Each arc of this graph represents a neighborhood relation between the connected faces. With the arc you can associate your custom data, the attributes. The proven good idea is to mark each arc with concave / convex flag which gives you more information about the model. Here you need to perform some analysis to classify the dihedral angles on convexity. In blog there is a dedicated record explaining how one can do that. After that, you can use the AAG instead of the initial B-Rep to check your rules. Each node of the graph represents a face, so you can always check its type, etc.

Does OpenCascade have the functionality to visualize Product Manufacturing Information (PMI) like surface roughness, parallelism tolerance, dimension tolerances, etc.?

OpenCascade is capable of reading STEP AP242 with geometric dimensions and tolerances. For visualization of PMI, there is no open source solution in OpenCascade. There is only a commercial component to visualize annotations, PMI, etc.

I'm dealing with manufacturing feature recognition. Now I'm looking for a tool to write some software. I know that OpenCasade supports Boolean operations. Does it offer also the tools for surface removal?

In OpenCascade there is no any intelligent (like in ACIS) face removal algorithm. Apparently, you may remove a face, but the gap will not be automatically filled (except for specific cases, e.g. suppression of machining holes drilled in interior area of faces). To implement some basic shape editor on the top of OpenCascade, you will definitely have to spend some time (months of job, if not years).

You are right that the ACIS functionality is much greater than that offered by OpenCascade. I just started using ACIS. It has function for defeaturing ( Spatial offers also Hoops Visualize for graphic display. All that is free of charge for Universities (except technical support). Recently I just created the first application in ACIS :-).

Well, what can I say? Good luck!