A short “tool/approach” primer of things I believe are relevant for transitioning to Rhino (industrial design excl. automotive/technical design). If you think something’s missing, please chip in.
CURVES
In any CAD software, the quality of your primary curves (“splines” or “sections” or “sketches”) is paramount, because they determine the quality of your primary surfaces, and your primary surfaces determine how well your secondary surfaces, and tertiary surfaces (blends, fillets) will work (think of a tree: “trunk > branch > twig > leaf” or family: “grandparents > parents > children > grandchildren” relationship).
Draw
-
Always try to use InterpCrv to draw single-span curves with Degree set to 2 or 5. Place the start and end points, then shape the curve by moving the 1 (degree 2) or 4 (degree 5) free CPs, or match them to other curves/surfaces directly.
(tool icon(s)) -
Alternatively, use Curve with Degree set to 2 or 5. Place the 3 (degree 2) or 6 (degree 5) CPs, then finalise the shape by moving them, or match it to other curves/surfaces directly.
(tool icon(s)) -
BlendCrv is ideal to draw G1 (tangent) or G2 (curvature) continuous curves between existing curves and/or surface edges, allowing you to fine-tune their shape interactively (use the Show curvature option while doing so). Use the Alt key to change the contact angle. Use the Shift keyto adjust symmetrically while moving the G1 and G2 handles on one end.
(tool icon(s)) -
By default, Circle creates a rational degree 2 curve with kinks (multi-knots). Draw circles with the Deformable option selected, Degree set to 5, and Point Count to 8. For ellipses, just non-proportionally scale such a circle.
(tool icon(s)) -
There is a case when a degree 3 curve can be useful - for constructions where a single-span curve must “take off” with G2 and end in a point with G0 continuity.
-
There are two cases, where multi-span curves/surfaces cannot be avoided - when drawing arcs from > 90° to 360° (circle), and when building edge fillets. However, edge fillets are typically introduced once the surface model is complete, and they are typically not used as input to further surface construction operations.
Edit
-
If you think you need an extra CP while shaping a curve, use InsertControlPoint or InsertKnotwhich both add a span and CP to the curve. RemoveKnot removes a span and CP from the curve. The curve’s degree remains unchanged in both cases.
(tool icon(s)) -
Alternatively, use ChangeDegree to a higher value with the Deformable option to add CPs to a curve. The number of spans remains unchanged. Caveat: without the Deformable option selected, more CPs will be created. Use the CurvatureGraph tool to see what happens.
(tool icon(s)) -
You can change a curve’s degree and number of CPs with Rebuild, but it is generally not recommended (messy CP structure).
(tool icon(s)) -
To flatten (planarise) one or more non-planar curves, select all CPs, click the Gumball X, Y or Z scaling icon, and type 0 into the value field.
Continuity
-
Use MatchCrv to make a curve G0 (position), G1 (tangent) or G2 (curvature) continuous to another curve.
(tool icon(s)) -
Use MatchCrv with the Surface Edge option and Point on surface edge to match to any location on any surface edge, and the subsequent Perpendicular to edge option for a perfect “T” alignment.
(tool icon(s)) -
Use EndBulge with the Tangency or Curvature option to manipulate the 2nd (G1) CP and/or 2nd and 3rd (G2) CPs to adjust the curve’s shape without losing the continuity previously established by matching. Activate CurvatureGraph beforehand.
(tool icon(s))
Evaluate visually
- Use CurvatureGraph to examine a curve’s curvature while modelling, and to check for internal G3 discontinuities.
(tool icon(s))
Evaluate numerically
- Use GCon to evaluate the G0 (position), G1 (tangent) or G2 (curvature) continuity between curves numerically. G0 continuity between curves is essential for building watertight (no naked edges) surface models.
(tool icon(s))
Do
- Use single span curves whenever possible. Less spans/CPs mean that a curve’s curvature is easier to control. Also, simple curves make for simple surfaces.
Don’t
- Join curves (semi-circles joined to lines to build a “pill shape” is a classic), because joining creates kinks at the join location. When you use such curves to build surfaces, it can make subsequent operations unnecessarily difficult. Any design can be perfectly modelled without joining curves.
(tool icon(s))
SURFACES
In any CAD software, the quality of your primary surfaces is paramount, because they determine how straightforward construction and G1 and G2 continuous matching of secondary and tertiary surfaces (their “neighbours”) will be.
The trimmed edge of a surface is complex and propagates its complexity into neighbouring surfaces, which leads to G1 or G2 continuity problems, etc. Ideally you always want clean theoretical edges, or to rebuild trimmed surfaces so they have only natural edges.
When you are building surfaces from/to a mirror plane, never imply G2 continuity, but only G1 continuity, meaning two CPs must be perpendicular to the mirror plane; and when you want to enforce a certain angle along a surface boundary/edge, use a tangency enforcement line or strip for proper control.
Edit
-
Set Isocurve Density to 0 in Properties to display only isocurves generated from a curve’s knots, or from an adjacent surface’s isocurves. You can use RemoveKnot to remove U and/or V isocurves to reduce surface complexity, and then use ChangeDegree. Use EdgeContinuity to check for lost continuity to neighbouring surfaces.
(tool icon(s)) -
Set Isocurve Density to 0 in Properties as above. Then try FitSrf to reduce the number of spans by changing the degree and choosing a tolerance. A Value of 0 will use your file’s absolute tolerance setting. As above, enable EdgeContinuity first, when continuity is concerned.
(tool icon(s)) -
To fine-tune a surface’s shape, or clean up its CP structure, or manually improve G1/G2 matching, select one or more CPs with the Gumball and the (Object) setting, and transform in the N, U, or V direction (blue, red, green). Use DragStrength with a low value for finer control (keep the window open). To slide CPs along their U or V control polygons, use Scale1D, with the Base point set to a target direction’s neighbour CP, and the reference point to the CP(s) to be transformed. As above, enable EdgeContinuity first, when continuity is concerned.
(tool icon(s)) -
Alternatively, use the traditional MoveUVN tool panel. As above, enable EdgeContinuity first, when continuity is concerned.
(tool icon(s)) -
To straighten a messy surface control point ribbon, before/while matching for G1 or G2 continuity, this script by Pascal Golay is a life-saver, allowing you to planarise CPs along a surface’s U or V direction from any viewpoint. Save the script and run it from an alias (keyboard shortcut).
Cut
-
Use Trim to cut off part of a surface with curves or other surfaces. The cut-off part is still “there”; it is just not displayed. Display the CPs to see for yourself.
(tool icon(s)) -
RefitTrim converts a surface with one trimmed edge (an edge-to-edge trim only) to an untrimmed (natural) surface, but it might deviate considerably from the original, so pay attention. Use MatchSrf afterwards if previously achieved continuity to other surfaces must be re-established.
(tool icon(s)) -
To cut a surface with another surface, while retaining the parts of both, use Split instead of Trim.
(tool icon(s)) -
To cut a surface in its U or V direction, use Split with the Isocurve option enabled. You can split freely or snap. The Shrink option creates two natural surfaces (display the CPs with/without Shrink and move one of the surfaces away to see what the difference is).
(tool icon(s)) -
Use ExtendSrf with a negative value and the Smooth and Merge options on to shorten a surface instead of using Split.
(tool icon(s)) -
Use RebuildEdges to “repair” trimmed edges that prevent proper matching.
(tool icon(s))
Continuity
-
Use MatchSrf to make a surface G0 (position), G1 (tangent) or G2 (curvature) continuous to another. Click near the same end on both edges, so that the surface doesn’t flip. Always check with EdgeContinuity; don’t rely on the Zebra display mode only.
→ Match equal degree surfaces: No non-default options needed.
→ Match a lower degree surface to a higher degree surface: Raise its degree with ChangeDegree before.
→ Match a higher degree surface to a lower degree surface: No non-default options needed.
→ Match a surface to a trimmed edge: Use the Match edges by closest points and Preserve isocurve direction options.
→ Match a shorter surface edge to a longer surface edge (partial match): Use the Match edges by closest points option.
→ Match a surface while keeping its contact angle: Use the Preserve isocurve direction option.
→ The Average surfaces option equally changes both surfaces.
→ The Refine match option often produces surfaces with far too many isocurves. Instead, turn on EdgeContinuity to find out where the largest deviation is, and insert an isocurve at that location with InsertKnot (try the Midpoints option) and match again.
(tool icon(s)) -
To improve the result of Match, use DragMode with the UVN option to adjust individual CPs. Set the Gumball to Align to Object. Adjust DragStrength if you want finer mouse control. You can also use the arrow keys on the keyboard for U and V movement, where for N movement, you need to press the fn plus arrow up/down keys. Don’t forget to reset DragMode to normal by choosing the UVN option again after you’re done (it’s a toggle)! Always check with EdgeContinuity.
(tool icon(s)) -
Alternatively, use the traditional MoveUVN tool to improve continuity. Always check with EdgeContinuity.
(tool icon(s))
Evaluate visually
-
Use Zebra with Adjust Mesh… and Simple Controls set to the highest polygon mesh density. Also consider using Detailed Controls to limit the Maximum edge length of polygons for an even finer display. When examining the G1 or G2 continuity between surfaces, change between Horizontaland Vertical and tumble the view; also use the orthogonal views.
(tool icon(s)) -
Use Emap to display a virtual environment reflected by your surfaces. You can also select your own spherical environment images.
(tool icon(s)) -
To detect defects across and also inside of surfaces, use CurvatureGraph on one or more surfaces. Use Count to change the number of sections displayed. Select whether you want to analyse the U and/or V direction with Surface Hair.
(tool icon(s))
Evaluate numerically
- Use EdgeContinuity to evaluate the G0, G1 or G2 continuity between surfaces numerically. G0continuity between curves is essential for building watertight (no naked edges) surface models. To display above-tolerance G0 gaps between the surfaces of your model (important for 3D printing and transfer to other CAD software), use ShowEdges with Naked Edges.
(tool icon(s))
Do
-
Try to build single-span surfaces whenever possible. Simplify surfaces, or build simple surfaces in the first place.
-
Use UseExtrusions to build normal Polysurfaces when you extrude. Default Rhino extrusions are simplified representations that make various surface modelling operations difficult later on.
-
First build your large fillets, then build your small fillets, particularly when small fillets shall run over large fillets. For true radial G1 fillets, this script by jim is a life-saver. Save the script and run it from an alias (keyboard shortcut).
-
Use Sweep2 preferably only when the rail curves have the same degree and number of CPs to avoid the creation of too many spans (and thus CPs). Otherwise, try RemoveMultiKnot to remove multiple-knots, and re-match for possibly lost continuity.
(tool icon(s)) -
Use EdgeSrf for full manual control (CP structure, continuity) on all four sides.
(tool icon(s)) -
Use BlendSrf for controllable G1 and G2 blends between surface edges.
(tool icon(s)) -
Revolve 360° with the Deformable option and Point Count 8 to obtain a degree 3 surface without kinks. Then ChangeDegree to 5 in the revolution’s orientation with the Deformableoption. Revolving less than 360° is buggy, so revolve as above and then use Split using the Isocurve option to generate valid surfaces with smaller angles of revolution.
(tool icon(s)) -
Divide revolved/periodic surfaces like cylinders, pipes, spheres, etc. in half with Split using the Isocurve option to eliminate the seam, or move the seam to an incongruous location with SrfSeam , so it cannot interfere with trimming and matching operations.
(tool icon(s)) -
Use SplitEdge on a “T” junction edge, when the surface edge you are building shall be shorter than the surface edge you are building to.
(tool icon(s))
Don’t
-
Build your model using Rhino’s buggy solid modelling/boolean tools, and keep away from FilletEdge, which is inaccurate and can lead to all kinds of ugly problems downstream. Always use Rhino’s proper surface modelling tools, and join your surfaces into a solid for rendering, 3D printing, or CNC-machining at the very end.
(tool icon(s)) -
Build from trimmed edges, if you can avoid it, or to adjacent edges with too many isocurves arriving at that edge.
-
Build surfaces with three edges. Singularities (corners with a collapsed fourth surface edge of zero length) make filleting over, matching, or joining very difficult or even impossible.
-
Use Explode after using Join to test for naked edges while modelling. It permanently changes trimmed edges. Always use Undo instead.
(tool icon(s)) -
Use Rebuild, because it will almost always destroy your surface’s CP structure, and your surface might deviate substantially from adjacent surfaces.
(tool icon(s)) -
Use NetworkSrf (“notwork”) and Patch (“botch”), as they create nothing but problems with continuity, filleting, and particularly UVN CP manipulation.
(tool icon(s))
MISCELLANEOUS
Curve and surface anatomy
-
To understand the fundamentals of NURBS curves and surfaces, see this Autodesk Alias page.
-
To understand the fundamentals of surface continuity, see this Autodesk Alias page.
-
To understand the fundamentals of curvature, see this Autodesk Alias page.
-
To display the knots/spans/isocurves - (ab)use InsertKnot, which temporarily displays them (click Cancel right after). Please note: Rhino’s EditPtOn shows you the “Greville points”, not the knots (in Alias, the knots are called “edit points”). Consider setting the Isocurve Density to 0 in Settings… (Options in Windows) > General, so only “real” isocurves are shown (unless you need extra isocurves for snapping, or other modelling tasks). Alternatively, use this macro by encephalon, which creates points at curve or surface knots (non-persistent). Alternatively, use CurvatureGraph and set Density to 0; a hair will be shown at each knot.
Display
- When, while using custom display modes the curves appear in front of surfaces, use ClearDrawOrder.