Elements in ODA’s BIMRv SDK usually have a set of geometry in GElement. Geometry is chosen during vectorization according to different rules. The easiest way to collect geometry is to use OdGiGeometrySimplifier. It is used for rendering output, and you can collect simplified geometry for all elements that are rendered in the view.
ODA provides several related BIMRv example applications (login required to ODA documentation):
- OdBmGetGeomEx — Dumps the geometry of the specified element from the specified file.
- OdBmVectorizeEx — Reads a .rvt or .rfa file, and vectorizes its content to the console.
- BmColladaExportEx — Reads a .rvt or .rfa file and writes it to a Collada file.
You also can iterate by elements, get their geometry and convert them. Each element has two getGeometry methods:
- -getGeometry() — Returns the geometry cache that was read from the file.
- -getGeometry(const OdBmGeometryOptions& options, OdBmObjectPtr& pObj) — Returns the geometry for the view. View-independent geometry nodes are returned if you do not set a view.
Annotation elements (TextNote, Dimension, Tags, etc.) do not return geometry. Annotation elements do not have a geometry cache.
B-Rep Geometry
Most 3D geometry is in B-Rep (Boundary Representation) format, which is a way of representing objects by their boundaries. B-Rep objects are stored as objects contained in sets of connected faces, edges and vertices, which are saved with topological information that defines the relationships between faces.
You can use BrBrep classes to work with B-Reps in general, which is unified with B-Rep geometry for all ODA products. If you work directly with B-Rep geometry, you need to process the specifics of a BIM B-Rep implementation on your application side.
More information about using B-Reps with BIM SDK is here:
- ODA documentation (login required): https://docs.opendesign.com/tbim/bm_brep.html
- ODA Blog:https://www.opendesign.com/blog/2017/july/two-ways-work-teigha-bim-b-reps