Skip to content

Geometry_Association

Greg Sjaardema edited this page May 9, 2025 · 3 revisions

A Generic Mesh-CAD Interface

Mark W. Beall, Joe Walsh, and Mark S. Shephard. 2004. A comparison of techniques for geometry access related to mesh generation. Engineering with Computers 20, 3 (sep 2004), 210–221. DOI:http://dx.doi.org/10.1007/s00366-004-0289-z

Mark S. Shephard. 2000. Meshing environment for geometry-based analysis. Internat. J. Numer. Methods Engrg. 47, 1–3 (jan 2000), 169–190.

https://www.scorec.rpi.edu/REPORTS/2015-4.pdf

https://scorec.rpi.edu/pumi/PUMI.pdf

Description of geometry association in meshb:

The meshb file format supports a bunch of optional keywords. The meshb writer in engineering sketchpad uses a few of them to store the geometric association info. The keywords and data it stores are:

  • GmfEdges: for mesh edges that are on a CAD curve, stores (vert1, vert2, cad edge global id)
  • GmfTrianges: for mesh triangles on a CAD surface, stores (vert1, vert2, vert2, cad surface global id)
  • GmfVerticesOnGeometricVertices/GmFVerticesOnGeometricEdges/GmfVerticesOnGeometricTriangles: for mesh vertices on CAD vertices/curves/surfaces, stores (vert, cad vert/curve/surface global id)

From this info, we can deduce the geometric associations:

  • Remaining vertices and faces must be on the interior of a CAD body

    • If there are multiple CAD bodies, we don’t know which one a given vert is on, so it is necessary to start from a vert on the surface (the CAD model can give the surface->body association) and work towards the interior of the body
    • For faces, look at the vert geometric association and get the CAD body
  • Remaining edges are either on the interior of a body or on a surface.

    • If the mesh edge is part of a mesh face that is on a CAD surface, the edge is on that surface too. Otherwise on interior of CAD body

    One final consideration: in EGADS/OpenCascade, CAD entities do not have easily accessible global IDs, they have body-local indices. The CAD global ids for body k are computed as \sum (num entities on bodies 1 to k-1) + body local id on body k.

Clone this wiki locally