-
Notifications
You must be signed in to change notification settings - Fork 2
Home
Keith Sloan edited this page Sep 2, 2026
·
3 revisions
FreeCAD import/export for Rhino .3dm files, geometry preserved as true NURBS.
- Import Gallery — rendered imports of the openNURBS V1–V6 sample set, for eyeballing import quality.
-
Gallery Utility — the
make_3dm_gallerymacro that builds a gallery for any folder of.3dmfiles. -
Trimmed Surfaces — FreeCAD's lossy trimmed-surface export, and the separate
import_trim_3DM/trim3dmimporter.
-
3DM (default) — pure-Python
import3DM. Native Rhino files: curves, NurbsSurfaces, trimmed Breps (official rhino3dm path). SubD objects import as their smooth subdivided limit surface (mesh) — complete and faithful — and the Rhino control-net meshes in the file are auto-hidden. -
3DM Trimmed via trim3dm —
import_trim_3DM, backed by thetrim3dmC++/OpenNURBS extension. Robust on complex trimmed solids and FreeCAD-exported trimmed files (see Trimmed Surfaces). The.sois not committed — build per platform.
Experimental (not a menu option): an exact SubD-as-NURBS reconstruction (
importSubD.makeSubD) emits exact bicubic B-spline limit patches for the regular quad regions plus a control-net cage. It is geometrically exact where it exists but incomplete at extraordinary vertices (holes → blocky tessellation), so it is retained in the repo but not registered as an import type. Completing it (Stam evaluation → watertight NURBS → CAM-ready) is future work.
Findings from the gallery below, tracked as GitHub issues (default 3DM importer):
- #4 — Point objects import but render blank (points / point-cloud / point-with-user-data files)
- #5 — Lights and named viewports import blank (spot_light, viewports — non-geometric)
-
#6 — V6
my_surfacesrenders blank (V2/V3 render fine) - #7 — Trimmed surfaces show spiky untrimmed-edge artefacts (Camera, T-Joint, DinerMug)
- #8 — Some surfaces import as wireframe / isocurves (SphericalSpiral, Speeder LHS)
- #9 — Stray wireframe box beneath model (Soccer)
-
#10 —
v5_ringimport hangs;v4_DVDCase_Solidsews into an invalid solid (blank). Shared fragilePart.Shellsew; the trim importer handles both.
The 3DM Trimmed via trim3dm importer avoids the trim/sew issues (#7, #10) — see Trimmed Surfaces.