3DM File Documentation
Summary
A .3dm file is a Rhino 3D Model: a 3D CAD model created in Rhinoceros by Robert McNeel & Associates, storing precise NURBS surfaces and curves used in product design, architecture and jewelry. It is a binary openNURBS file, not a mesh format, with the MIME type model/vnd.rhino.3dm. Open it in Rhino, or free in a browser viewer or Autodesk Fusion. To use the model in other CAD software, export it to a neutral format like STEP, IGES or STL.
Technical details
| Feature | Value |
|---|---|
| Full name | Rhino 3D Model (openNURBS) |
| File extension | .3dm |
| MIME type | model/vnd.rhino.3dm |
| Format type | Binary 3D CAD model (NURBS surfaces, curves, breps, meshes) |
| Developer | Robert McNeel & Associates |
| Category | 3D image / CAD file |
| Toolkit | openNURBS (now the rhino3dm libraries) |
| Open standard | Partial — read/write libraries published openly |
| Geometry model | NURBS curves and surfaces, breps (solids), meshes |
| Header text | 3D Geometry File Format (readable ASCII at offset 0) |
| Magic number (hex) | 33 44 47 65 6F 6D 65 74 72 79 (“3DGeometry”) |
| Backup companion | .3dmbak written alongside the file |
| Native editor | Rhinoceros (Rhino 8), Windows and macOS |
| Free viewing | Browser viewers (rhino3dm/Rhino.Compute), Autodesk Fusion |
| Export targets | STEP/STP, IGES, STL, OBJ, DWG/DXF, 3DS |
| Related extensions | .3dmbak, .igs, .iges, .step, .stp, .stl, .obj, .dwg, .skp |
| Libraries / spec | github.com/mcneel/rhino3dm |
What is a 3dm file?
A .3dm file is the native 3D-model format of Rhinoceros (“Rhino”), the NURBS-based CAD and modeling application from Robert McNeel & Associates. Unlike polygon or mesh formats, a .3dm stores mathematically precise free-form geometry: NURBS curves and surfaces, solids known as breps, and also meshes, together with layers, materials, annotations and other scene data. That precision is why Rhino and the .3dm format are used in product and industrial design, architecture, naval and automotive surfacing, and jewelry CAD, where smooth, exact surfaces matter more than a triangle count.
The format is built on openNURBS, an openly published toolkit (now the rhino3dm libraries for C++, .NET, Python and JavaScript) that lets any application read and write .3dm without licensing Rhino. That openness is why many CAD and 3D programs can import the format and why browser-based viewers exist. A .3dm begins with the readable ASCII header 3D Geometry File Format, so it is straightforward to identify even though the body is binary.
Why NURBS geometry, not a mesh
The defining property of a .3dm is that it stores geometry as NURBS (Non-Uniform Rational B-Splines) rather than as a mesh of flat triangles. A NURBS surface is defined by a grid of control points, knot vectors and per-point weights, from which the exact surface is evaluated by a mathematical function. This means a sphere or a car body panel in a .3dm is a true smooth surface at any zoom level, not an approximation, and it can be edited by moving control points while remaining exact. A mesh format such as OBJ or STL, by contrast, records the surface as thousands of tiny facets that only approximate the curve and cannot be refined without re-tessellation.
This distinction drives the whole workflow around the format. Precision is preserved as long as the data stays in NURBS form, which is why moving a model to another CAD system is best done through a surface- or solid-preserving format like STEP or IGES. Converting to a mesh format is a one-way approximation, appropriate for 3D printing or rendering but lossy as engineering geometry.
The openNURBS chunk structure
After the 3D Geometry File Format header line and a version number, the rest of a .3dm is a sequence of chunks. Each chunk carries a type identifier (a typecode) and a length, and chunks can nest, so a reader can walk the file, recognise the chunks it understands, and skip over the ones it does not by using the length to jump ahead. This is the same forward-compatibility principle used by other chunked formats: a chunk-aware reader can open a file written by a newer version because unknown chunks are simply stepped over. The document is organised into sections that hold, in order, the file properties and settings, then tables of the model’s contents.
| Section / table | What it holds |
|---|---|
| Header & properties | Version, application, revision, notes, units and tolerances |
| Settings | Render, view and model settings |
| Object table | The geometry: NURBS curves and surfaces, breps, meshes |
| Layer / group tables | Organisation of objects into layers and groups |
| Material & texture tables | Appearance data referenced by objects |
| Instance (block) definitions | Reusable object definitions and their placements |
The object table is where the real geometry lives, and its entries are the NURBS and brep definitions described above along with any meshes. Because the chunk format and its typecodes are documented in the openNURBS source, third-party tools read the same tables Rhino writes.
Breps: how solids are represented
A solid in a .3dm is a brep, short for boundary representation. Rather than storing a solid as a filled volume, a brep describes it by its boundary: a set of trimmed NURBS surfaces (faces) joined along shared edges, with topology recording which faces meet at which edges and vertices. Trimming means a face can be a bounded region cut out of a larger underlying surface, using 2D trimming curves in the surface’s parameter space to define holes and outlines. This is the standard way mechanical CAD represents watertight solids, and it is what allows a Rhino model to export cleanly to STEP, which also uses trimmed-surface breps. Meshes may coexist in the same file, either as display approximations of the NURBS or as imported polygon geometry.
Exporting to other CAD and to 3D printing
Because most people receiving a .3dm do not own Rhino, moving the geometry into other software is the common task, and the right target depends on what the geometry is for. For mechanical CAD (SolidWorks, Fusion, Inventor), export to STEP (.stp/.step), which preserves the NURBS solids and surfaces and is the cleanest interchange route; IGES (.igs/.iges) is an older neutral surface format to use when the target reads IGES but not STEP. For 3D printing, export to STL, which meshes the NURBS model into a watertight triangle mesh — check that the mesh is closed before printing, since precision relative to the original surfaces is lost. For rendering and general 3D apps such as Blender, export to OBJ. For AutoCAD drawing workflows, export to DWG or DXF. In every mesh export the smooth NURBS surface is tessellated, so those outputs are approximations, whereas STEP and IGES keep the exact geometry.
Viewing a .3dm without Rhino
Full editing requires Rhino itself (Rhino 8 on Windows and macOS, with a time-limited free trial), but viewing is possible for free. Browser-based viewers built on rhino3dm and Rhino.Compute let you upload a .3dm and orbit the model with no installation, which also works from a phone. Autodesk Fusion can import a .3dm for personal use, and standalone viewers such as the 3D-Tool free viewer open it to inspect and measure. Rhino also writes a .3dmbak backup file next to the model as you work, so a folder containing a .3dm often has a matching .3dmbak that is simply the previous saved state.
Frequently asked questions
How do I open a .3dm file without Rhino?
Use a free viewer: an online 3DM viewer powered by rhino3dm, the 3D-Tool free viewer, or import it into Autodesk Fusion (free for personal use). For full editing you need Rhino itself.
How do I convert a .3dm to STL for 3D printing?
Open it in Rhino (or import to Fusion) and Export or Save As STL. The NURBS surfaces are meshed into a printable triangle mesh. Check that the mesh is closed and watertight before printing.
How do I get a .3dm into SolidWorks or Fusion?
Export the .3dm from Rhino to STEP (.stp) or IGES. Those neutral formats preserve solids and surfaces and import cleanly into most mechanical CAD, unlike a mesh export.
Is .3dm the same as 3DML?
No, that is a common mix-up. A .3dm is the Rhino 3D Model. “3DML” (Flatland’s 3D Markup Language) was an unrelated, long-dead web format. Treat a .3dm as Rhino geometry.
References
- openNURBS / rhino3dm — read & write .3dm (open libraries)
- Rhinoceros — official site (McNeel)
- McNeel — Rhino file import/export formats
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.