Need clear, manufacturable labels on curved parts? Project text as curves onto surfaces for dependable engraving, embossing, and presentation graphics directly in Rhino. If you don’t own Rhino yet or want add‑ons and training, check out NOVEDGE at novedge.com.
Projection vs. Pull: pick the right tool
- Project: casts curves to a surface along a direction (CPlane, View, or custom vector). Best when you control the view/normal and want predictable silhouettes.
- Pull: maps curves to the closest points on a surface. Best for gentle curvature where you placed text near the target; reduces skewing from oblique projections.
- Highly curved targets: if distortion is unacceptable, switch to surface-mapped workflows (e.g., FlowAlongSrf) for true UV conformance.
Step-by-step: reliable “ProjectText” workflow
- Create text as curves
- Run TextObject and set Output = Curves (lightweight, ideal for projecting and trimming).
- Pick a clean, sans-serif font when you plan to machine/laser; minimize tiny counters and filigree.
- Set text height to final scale early to avoid later re-scaling errors.
- Align for minimal distortion
- Use CPlane > Surface (or CPlane > Object) at your target pick area so the projection direction is near-normal to the surface.
- Optionally use OrientOnSrf to place and rotate the text curves onto the approximate location before projecting.
- Project or Pull
- Project: choose Direction = CPlane or View to control the cast. Avoid long throws across tight curvature.
- Pull: use when the text is very close to the surface and you want closest-point mapping.
- Clean up curves
- Use SelSelfIntersectingCrvs to catch overlaps, then SimplifyCrv where possible.
- Join to ensure closed loops for trims and booleans; verify with What or Properties.
- Commit the annotation
- For visual etching: Split or Trim the face with projected curves and assign a contrasting material to the inset regions.
- For engraving/embossing: ExtrudeCrv a short distance along the local normal (use the Normal osnap), then BooleanDifference (engrave) or BooleanUnion (emboss).
Accuracy and robustness tips
- Document tolerances: set absolute tolerance relative to part size (e.g., 0.01–0.1 mm for small products) before projecting.
- Work near the world origin to reduce numeric noise on trims and booleans.
- On trimmed faces, run ShrinkTrimmedSrf before splitting to keep tight trim boundaries.
- After booleans, use ShowEdges (Naked/Non-manifold) to verify watertight results.
Speed it up
- Create an alias/macro for quick “ProjectText”:
!-TextObject _Output=_Curves _EnterPause _Enter
_Project _Pause
(Place text, then pick target surfaces and direction) - Wrap your standard fonts, heights, and layer assignments into a template. Save time across teams and projects.
When to switch approaches
- If letters stretch on high curvature or across seams, try Pull first. If distortion persists, use a UV-based method (e.g., FlowAlongSrf) or a decal for pure visualization.
- If booleans fail, simplify letter curves (fewer nodes, no tiny segments) and increase boolean tolerance slightly within your QA limits.
For Rhino licenses, upgrades, and expert guidance, NOVEDGE is a trusted partner: explore options at NOVEDGE and reach out to their team for tailored advice.






