Rhino3D Reader

Rhino3D
File Extension 3DM
Supported Versions From 4 to 8
Platforms
Assembly
B-Rep
PMI N/A
Tessellation
Visualization

Rhino3D is a file format created by Robert McNeel & Associates. It is used in the proprietary Rhinoceros ecosystem.

Our Rhino3D Reader provides full access to the assembly, B-rep, view, and PMI data stored within a Rhino file. The most common file extension you can expect is .3DM.

HOOPS Exchange geometry access for Rhino3D includes:

  • B-rep: Access to exact geometry where present in the source file.
  • Tessellation: Can be generated by HOOPS Exchange for visualization.

How to Import From Rhino3D

If you are new to reading models with HOOPS Exchange, see the basic load workflow </guide/basic_operations/load_model>` section of the Programming Guide.

To load a Rhino3D file, use A3DAsmModelFileLoadFromFile(). The A3DParamsLoadData structure is used to customize the loading behavior:

A3DAsmModelFile* pModelFile = 0;

A3DRWParamsLoadData sReadParam;
A3D_INITIALIZE_DATA(A3DRWParamsLoadData, sReadParam);
sReadParam.m_sGeneral.m_bReadSolids = true;

// ... set other A3DRWParamsLoadData fields as necessary

A3DAsmModelFileLoadFromFile("path/to/file.3dm", &sReadParam, &pModelFile);

Note that HOOPS Exchange provides file reading options specific to Rhino3D. These options can be set in the A3DRWParamsLoadData.m_sSpecifics.m_sStep field.

See Simple Load and Export for general information about loading model files.

Assembly

Incremental load is not supported by our Rhino reader. Datum planes and construction geometry are also supported and accessed through the assembly tree.

B-Rep

HOOPS Exchange provides basic access to B-rep geometry through NURBS. B-spline curves and B-spline surfaces are supported.

Tessellation

HOOPS Exchange computes tessellation based on the B-rep in the model file.

Visualization

The visualization data for this format is generated by the HOOPS Exchange tessellation engine.

Views

Our Rhino3D reader does not support views.

PMI

Our Rhino3D reader does not read PMI.

Metadata

Starting from HOOPS Exchange 2022 SP1, our reader can read user-data from Rhino files, including:

  • Document user strings, located within the A3DAsmModelFile entity.
  • Layer user data, located within layer A3DAsmProductOccurrence entities, which are children of the root product occurrence.
  • Object user data, provided through their corresponding A3DAsmProductOccurrence entities.
  • Geometry user data, available in their corresponding A3DAsmPartDefinition entities.

Rhino user data are provided through Generic Attributes. This option is available when reading attributes is enabled from general read parameters:

A3DRWParamsLoadData.m_sGeneral.m_bReadAttributes = A3D_TRUE;

Upon reading generic attributes containing Rhino data, A3DMiscAttributeData::m_pcTitle can be any of:

  • ON_UserData
  • ON_UnknownUserData
  • ON_ObsoleteUserData
  • ON_RdkMaterialInstanceIdObsoleteUserData
  • ON_UserStringList

The data themselves are part of the collection of A3DMiscSingleAttribute objects available through A3DMiscAttributeData::m_asSingleAttributesData. Single attribute names are string where each correspond to a specific constant for convenience:

Constant Value
kA3DRhinoAttributeName3DMVersion “3DM version”
kA3DRhinoAttributeNameApplicationUUID “application UUID”
kA3DRhinoAttributeNameArchiveClassUUID “archive class UUID”
kA3DRhinoAttributeNameBufferData “buffer data”
kA3DRhinoAttributeNameModelObjectUUID “model object UUID”
kA3DRhinoAttributeNameOpenNURBSVersion “OpenNURBS version number”
kA3DRhinoAttributeNameRDKMaterialInstanceUUID “RDK material instance UUID”
kA3DRhinoAttributeNameUnknownClassUUID “unknown class UUID”
kA3DRhinoAttributeNameUserDataCopyCount “user data copy count”
kA3DRhinoAttributeNameUserDataUUID “user data UUID”
kA3DRhinoAttributeNameUserDataXForm “user data xform”
kA3DRhinoAttributeNameDocumentUserStrings “document user strings”