Transitioning to Rhino

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.
15 Likes

I suspect you mean Curve here instead, as InterpCrv generally generates multi-span curves

Changing the degree of single span curves will not alter the curve’s shape nor add kinks, no matter if Deformable is on or off. Deformable on multi-span curves will alter the curve’s internal continuity and shape, but it indeed has the benefit of improving the internal transition at knot locations, as it will not multiply the existing knots.

1 Like

Amazing document!

I agree with Gijs to use Curve instead of Interpolate but the rest is really useful.

Lagom, With only a couple infractions according to Gijs, you got a 98 on your work. Well done. I think you have helped this community a great deal. —Mark

I had to read this a couple of times to understand what is intended.

@lagom appears to recommend initially using InterpCrv with the desired degree specified and only inputting the start and end points. That creates a single span straight curve of the specified degree and then the control points can be moved as desired. This is in constrast to Curve which creates a lower degree curve than specified degree unless sufficient points are used.

InsertKnot does not change the shape of the curve but does move existing control points so that the shape of the curve is not changed.
InsertControlPoint changes the shape of the curve but does not move existing control points.
Both increase the number of spans, the number of knots and the number of control points by 1 for each knot/control point inserted.

If the keyboard has PageUp and PageDn keys then those keys can be used for N movement.

Link to the script is not included.

yes, correct, I misread that

Hence I mentioned “single span curves”, two clicks, start and end point.

Right, multi-span. A two-span degree 3 curve upped to degree 5 with deformable off will have 9 CPs, whereas with deformable on will have 7 CPs. So, no kink problem, but too many CPs for multi-span.

That’s how you do things in Alias, ICEM or Catia. You draw a degree 5 curve with two clicks, and shape it. But you can also draw a degree 5 curve with 6 clicks : )

Which is not what I wrote ; )

Nearly all users I know have laptops with one or two external displays. Unfortunately, McNeel does not explain in the manual that for N movement, one has to press the fn key.

Oops, an omission. His script is worth its weight in gold : )

Anyway, need to remove the kink thing and mention the “CP excess” instead.

And I did not say you did.

I was responding to your request:

Is there a reason InsertKnot is not mentioned in this paragraph? I almost always use it instead of InsertControlPoint when I need to add a control point while shape a curve or surface to avoid the shape changes. I find that reduces the number of control points I need to move subsquently to achieve the desired shape.

Both options are mentioned…

“If you think you need an extra CP while shaping a curve, use InsertControlPoint or InsertKnot which both add a span and CP to the curve.”

We could turn this info eventually into a learn page if you are interested. The tools we use allow you to insert commands that automatically add icons as well as a link to relevant help pages.

Here’s an example Rhino - Create Curves

1 Like

Sure, why not? Although, it’s not a comprehensive manual, just capturing what I think are important points for those who transition to Rhino. And maybe over a week or so, other surface modellers will chip in with other things I did not notice.

There is a lot of very good information in this document. Lagom’s efforts are appreciated.

However before it is published and endorsed by McNeel some revisions would be in order. There are some statements which appear to be based on standards Lagom has learned during his experiences in “industrial design excl. automotive/technical design”. But these statements are not universally applicable to every user creating high quality surfaces.

I am not suggesting Lagom needs to change this document for his use of it, but it does need to be revised before publication and endorsement as a general document by McNeel.

Areas which should be revised before general endorsement by McNeel:

There are good reasons to use other degrees, degree 3 in particular, in many situations.

There are good reasons to prefer single span surfaces, but there are also good reasons to use multispan surfaces.

I recommend using surfaces with as few control points as needed to achieve the desired shape and meet other requirements. In some situations using single span surfaces is way to achieve that, while in other situations using multispan surfaces may result in few control points. Of course there can be other reasons to use single span or multispan. A more complete discussion of this needs its own thread.

Sometimes exact rational representation of circles, arc, cylinders and other surfaces of revolution is needed by the user of the model. Whether to use rational degree 2 or non-rational higher degree depends on the how the items will be used and customer requirements.

NetworkSrf and Patch have appropriate and inappropriate uses. A caution about there is use is appropriate. However the strong statement that they “create nothing but problems with continuity, filleting, and particularly UVN CP manipulation” is incorrect. They can create surfaces without problems with continuity, filleting, and particularly UVN CP manipulation. I have previously posted about how I use Patch in the creation high quality surfaces starting with networks of curves and scan data.

2 Likes

What I mean is that we could eventually bundle this information in a workflow. I think having that on a webpage will help more users find the information they need than having it buried in a discourse thread.

1 Like

Absolutely. Adding to the initial list, I would add to the “Curves” section:

  • 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.

What would those situations be? Whether with Alias, ICEM, Catia or recently NX, I have seen users advocating degree 3 over 2 or 5.

What would those reasons be? Only in final filleting, you have to live with multi-span surfaces.

Mechanical parts are a different subject than surface modelling.

Looking at the plethora of problems users on this forum have with these surface types, often using them where a classic four-sided patch solution exists, or an even simpler surfacing approach.

People with some skill in surface modelling with Alias, ICEM, Catia, etc. need information about how to transition to Rhino without falling into potholes. We’re not talking automotive or aircraft industry here, and neither technical design. I believe there is seful information here, in a single spot, without long-winded verbal gymnastics, or things that should rather be demonstrated in tutorial videos.

This appears to be a very good document for individuals who have worked with Alias, ICEM, Catia, etc and have experience similar to your own.

Most of it agrees with what I have learned from my experience modeling boats including extensively experimenting with alternative approaches. There are a few areas where I’ve reached different conclusions, which I described in my previous post.

There is a difference between saying this is what works for me and I recommend, and saying or implying this is what always should be done. For a document which is clearly the opinions of an individual the second approach is fine.

1 Like