How to Make a Rhino File for CNC: A Complete Workflow
A practical workflow for engineers and designers who model in Rhino and need a file a machinist can actually cut. You will learn the geometry checks, file settings, and export choices that decide whether a part runs clean or comes back with a DFM question list.

In this article
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
Key takeaways
Decide what the CNC sees before you draw
The fastest way to make a Rhino file for CNC work is to think about the cutting tool before you think about the shape. A surface can look clean on screen and still be unmachinable: a pocket deeper than any end mill can reach, a fillet smaller than the tool corner radius, a wall so thin it sings during the finishing pass. Those problems cost more to fix after toolpathing than during modeling.
Start with the stock. If the part is 120 × 80 × 25 mm, note how it will be held. A vise needs flat parallel faces; a fixture plate needs mounting holes. If no flat face exists, the machinist has to build soft jaws or a fixture, and that is a real cost. Design at least one reliable clamping face where the part will not flex.
Next, decide the orientation. For a 3-axis mill, all features should be reachable from one or two directions. If a part has features on five sides, it belongs on a 5-axis machine or needs multiple setups. A multiple-setup part needs more datums, and every extra datum is a chance for a 0.02 mm stack-up error.
- 1Check wall thicknessAim for 0.8 mm minimum in aluminum, 1.5 mm in stainless. Thin walls deflect under cutting force.
- 2Check internal cornersThe smallest internal radius sets the largest tool that can clear the pocket. A Ø3 mm corner means a Ø6 mm end mill cannot finish it.
- 3Check depth-to-diameterA pocket deeper than 4× its width needs a long, thin tool. Expect chatter and a slower feed rate.
Close the solid and check for naked edges
CNC programming software needs a closed volume to calculate a toolpath. It uses the surfaces that bound the solid to figure out what is material and what is air. If the model has open surfaces or naked edges, the CAM system cannot tell which side is inside the part. It either fails outright or produces a toolpath that cuts the wrong material.
In Rhino, run the ShowEdges command with Naked edges selected. Every hole, every seam, every trimmed surface should come back clean. A single stray edge is enough to break the solid. Common causes are surfaces that were trimmed but never joined, a fillet that does not quite touch the neighboring face, and imported geometry from another CAD system that came in as separate surfaces.
After joining, verify the volume. Use Volume or the Properties panel to confirm the part reports as a closed polysurface. If the value comes back as zero or the object is listed as open, do not export it. Fix the topology first, then re-check. This single step prevents most of the questions that come back from a machine shop.
- 1Join before exportSelect all surfaces and run Join. A closed polysurface behaves as one object in CAM.
- 2Avoid zero-thickness facesTwo surfaces sharing an edge with no gap create a knife edge the tool cannot follow.
- 3Rebuild bad surfacesA self-intersecting surface imported from another system will not trim cleanly. Rebuild it.
Set units, tolerance, and model at true size
Rhino's document properties control the unit system and the modeling tolerance. For CNC work in metric, set units to millimeters and the absolute tolerance to 0.001 mm. That is tighter than the machine can hold, but it keeps the geometry clean when you join surfaces. A loose tolerance like 0.1 mm lets surfaces drift apart and creates gaps that show up as naked edges.
Model at 1:1 scale. Never draw at half size or double size and plan to scale later. Scaling a solid in Rhino can leave behind tiny errors in the surface data, and those errors become visible when the CAM system tries to offset the toolpath. If you must scale, do it on a copy, then re-run ShowEdges and check the volume again.
Keep the tolerance consistent between the model and the drawing. A drawing that calls out ±0.05 mm on a feature modeled with 0.1 mm tolerance is a contradiction. For our shop, parts are machined to ±0.005 mm when the drawing requires it, with surface finish from Ra 0.2–0.8 μm on fine features up to Ra 1.6–3.2 μm as-machined. The model should carry the nominal geometry; the drawing carries the allowable variation.
- 1Absolute toleranceUse 0.001 mm for millimeter models. It keeps joins tight without slowing Rhino down.
- 2Angle toleranceLeave the default 1 degree unless you model very small arcs. Tighter values slow the file.
- 3Never scale after joiningScaling re-computes surface data and can reopen closed edges.
Put a datum where the machinist can reach it
Every part needs a known reference point in space. In Rhino, that is the origin of your model. In the machine, it is a corner or a bore the operator can touch with a probe or an edge finder. If the two do not line up, the machinist has to guess where the part sits, and guessing at setup is how holes end up 0.3 mm off location.
The cleanest approach is to model the part so a real, machinable feature sits at X0 Y0 Z0. A corner of the stock, the center of a primary bore, or the intersection of two finished faces all work. Put a small note in the file name or on a separate layer describing the datum, for example DATUM-A: top-left corner, Z0 at top face. This is a two-second step that saves a phone call.
For parts with features on multiple faces, add a secondary datum. On a 4-axis or 5-axis job, the operator needs to know how the part is oriented relative to the rotary table. A Ø400 mm rotary table gives you a clear center point; if your model's rotary axis does not pass through a known feature, the setup becomes a measurement exercise instead of a quick pick-up.
- 1One primary datumA corner or bore center that the operator can probe directly.
- 2Secondary datum for multi-face workDefine the rotary axis position for 4-axis and 5-axis setups.
- 3Label it in the fileA layer named DATUM with a point marker beats an email explanation.
Export the right format and check it twice
STEP is the default exchange format for CNC work. It carries true B-rep geometry, so arcs stay arcs and cylinders stay cylinders. Use AP214 or AP203; both are widely supported. STL is fine for 3D printing and rough visualization, but it flattens every curve into triangles. A Ø10 mm hole exported as STL may come out as a polygon with 24 flat sides, and the CAM system will machine those flats.
If your CAM system reads native Rhino files, you can skip the export, but most shops run Mastercam, Fusion, or NX and want STEP or IGES. Export STEP with the unit set to millimeters and the tolerance at 0.001 mm. Then open the exported file in a viewer and count the surfaces. If a simple bracket shows 400 faces, something went wrong during export and the file needs a rebuild.
Include a drawing or a PDF with critical dimensions. The STEP file tells the machinist the shape; the drawing tells them what matters. Mark which dimensions are functional, which are reference, and where the finish callouts apply. For parts headed to our floor, a STEP plus a dimensioned PDF lets us return a DFM analysis within 12 hours instead of trading questions for a day.
- 1Use STEP AP214Best balance of curve fidelity and compatibility across CAM platforms.
- 2Avoid STL for machined partsFaceted geometry forces the CAM system to machine flat approximations of curves.
- 3Re-open and inspectA 30-second check in a STEP viewer catches export errors before the shop does.
Step by step: from Rhino model to CNC-ready file
Follow these steps in order. Skipping one usually means a DFM question later.
- 1Set document units and toleranceOpen Document Properties > Units. Choose millimeters, absolute tolerance 0.001 mm, angle tolerance 1 degree. Do this before drawing anything.
- 2Model at 1:1 with real stock in mindDraw the finished part at true size. Note where the stock will come from and which face will be clamped. Leave at least one flat face for the vise.
- 3Join surfaces into a closed polysurfaceSelect all surfaces, run Join, then ShowEdges with Naked edges. Fix any open edge before continuing. Check the volume reports correctly.
- 4Add fillets and radii the tool can cutKeep internal corner radii at least 0.5 mm larger than the smallest end mill you expect. For a Ø6 mm tool, use R3.5 or larger at pocket corners.
- 5Set the datum at a machinable featureMove the model so a corner or bore center sits at X0 Y0 Z0. Put a point marker on a layer named DATUM. Note the orientation in the file name.
- 6Check thin walls and deep pocketsMeasure the thinnest wall, the deepest pocket, and the smallest feature. Anything under 0.8 mm in aluminum or deeper than 4× tool diameter needs a second look.
- 7Export STEP AP214 in millimetersUse Export Selected, choose STEP, set units to millimeters, tolerance 0.001 mm. Save a copy with the revision in the file name.
- 8Re-open and verify the exportOpen the STEP file in a viewer. Check surface count, overall size, and that holes still read as circles. Attach a dimensioned PDF for critical features.
Which export format fits which job
Pick based on what the shop's CAM system reads and how much curve fidelity the part needs.
| Format | Best for | Watch out for |
|---|---|---|
| STEP AP214 | Most CNC milling and turning jobs | Large assemblies can be heavy; export only the part |
| IGES | Older CAM systems that do not read STEP | Surfaces may split; re-check for gaps after import |
| STL | 3D printing and visual checks only | Curves become flat triangles; holes turn polygonal |
| 3DM (native) | Shops running RhinoCAM or similar | Not readable by Mastercam or NX without conversion |
| Parasolid (.x_t) | SolidWorks and NX workflows | Requires a clean closed solid; open surfaces fail |
A clean Rhino file is cheaper than a re-cut part
Close the solid, set the units, place the datum, and export STEP. Four habits that remove most of the risk from a CNC job.
Rhino to CNC questions engineers ask
Can I send a Rhino .3dm file straight to a machine shop?
You can, and some shops with RhinoCAM will open it without issue. But many production shops run Mastercam, NX, or Fusion 360, and those systems do not read .3dm natively. Sending a STEP file alongside the .3dm removes the conversion step and the risk of a translation error.
If you do send .3dm, make sure the model is a closed polysurface and the units are set to millimeters. A native file with inches and open surfaces is worse than a STEP export, because the shop may not notice the unit issue until the first cut.
Why does my Rhino model show as open when it looks fine on screen?
Shaded view hides small gaps. Switch to wireframe or run ShowEdges with Naked edges to see them. Common causes are trimmed surfaces that were never joined, fillets that do not fully intersect their neighbors, and imported geometry that came in as separate faces.
A gap of 0.002 mm is invisible in shaded view but enough to break a solid. That is why the absolute tolerance should be 0.001 mm: it forces joins to close tightly.
Do I need to model threads and chamfers?
Model chamfers, because they change the geometry the tool follows. Threads are usually called out on the drawing instead of modeled, since a modeled thread adds thousands of surfaces and slows the CAM system without improving the cut. A note like M6 × 1.0 tapped hole, 12 mm deep gives the machinist everything needed.
If you model a thread for a 3D print or a render, keep it on a separate layer and hide it before exporting the STEP for machining.
What tolerance should I put on the drawing versus the model?
The model carries nominal geometry. The drawing carries the allowable variation. Model the hole at exactly Ø8.000 mm and let the drawing state the tolerance, for example Ø8.000 ±0.02 mm.
For features that must mate, call out the fit explicitly. A bearing bore, a dowel pin hole, and a clearance hole all need different tolerances even if they look similar on the model. Our shop machines to ±0.005 mm when the drawing requires it, and we will flag any callout that looks tighter than the process can hold.
How do I handle a part that needs machining on five sides?
Model it with a clear rotary axis and a secondary datum. On a 5-axis machine, the part sits in one setup and the table tilts, so the datum is the rotary center. On a 3-axis machine, the same part needs three or more setups and a fixture, which raises cost and adds stack-up error.
If the part is a prototype, consider whether the five-sided geometry is functional or cosmetic. Moving a cosmetic feature to a second setup is often cheaper than a full 5-axis run.
Can you check my Rhino file before I commit to a production run?
Yes. Send the STEP file and a drawing, and we return a DFM analysis within 12 hours. The review covers wall thickness, tool reach, corner radii, datum placement, and any feature that will need a special tool.
Uploads are kept confidential, and an NDA is available on request. There is no minimum order quantity, so the same review applies to a single prototype or a 10,000-part run.
Send us your Rhino model for a free DFM check
Upload a STEP file and a drawing. We return a manufacturability review within 12 hours, with no minimum order quantity.
12-hour quote100% inspectionNDA on request