Surfacing · Tutorial

Create an Ergonomic Brush Handle

Functional parts don't need curvature continuity (g2) everywhere. We'll use FilletSrf to create rolling ball fillets (G1) between surfaces and polysurfaces, eventually connecting all into a single closed body.

30–45 minRhino 9 for Windows / MacIntermediate
Create an Ergonomic Brush Handle

In this tutorial, you’ll learn how to solve simple and complex shapes using Rhino’s Patch command. Using Patch to generate 4 and 5-sided surfaces while preserving geometric continuity with adjacent edges, results in smoother flow and cleaner reflections on the final product, whether the model is intended for manufacturing or visualization. We’ll also configure Zebra analysis to clearly evaluate surface transitions, and finish by adding bristles using a parametric Grasshopper definition. Let’s get started!

Create the Handle

In this section, we will create the 5-sided surface for the handle. 5+ sided surfaces are a challenge in NURBS modeling, especially when needing to control the flow or continuity to adjacent geometry. Patch has tools to control continuity on all sides, including on surfaces with unequal edge count and gives you fine-grain control over surface direction and spans.

  1. Download and open the model Patch Brush.
  2. Maximize the .
  3. Run the Patch command.
  4. At the Select edges, curves, meshes, pointclouds and points prompt , select the indicated edges and curves:
  5. In the viewport, select the dot that is over the shortest edge to change its continuity to G2 .
Changing Continuity
The continuity dots can be changed at all times during the Patch command. Left-mouse cycles up, right-mouse cycles down. Note that edges can have G0, G1 or G2 continuity, curves can have G0 continuity or set to Internal, and points can only be Internal.
  1. Right-click to open the Patch dialog:
    1. Change the Domain to Molded.
    2. Turn on Preview and Refine.
    3. Press OK to create the Patch:
  2. Select the patch surface and the side surface of the brush frame.
  3. Run the Zebra command.
  4. In the Zebra panel, change Mode to Rainbow.
  5. Notice some irregularities in the Patch surface.
  6. Turn on the layer internal: handle.
  7. Double-click the patch surface to enter the Patch dialog in Edit Mode:
    1. Select the Constraints button.
    2. Select the internal curve (orange) as a constraint.
    3. It will first be marked G0
    4. Select that label to change it to I , making it an internal constraint.
    5. Right-click to get back to the Patch dialog.
    6. Under Tolerances, change Internal 1.
    7. Select OK to create the patch surface. The surface quality is improved.
  8. In the Zebra panel, select the toggle to deactivate the analysis.
Internal Constraints
Adding the internal: handle curve, guides the patch surface flow and removes some of the wobblyness seen in the initial Patch iteration. Especially, at the junction between the patch and the side surface.

Create the Frame

In this section, we will create a 4-sided patch. Also called untrimmed surface, it is the natural way to create NURBS surfaces. We could use most surface from curve commands for this step. We will continue using Patch for its flexibility taking a variety of inputs such as points, as well as its powerful history-based editing UI.

  1. Continue with your file or download patch-brush-frame.3dm.
  2. Run the Patch command.
  3. At the Select edges, curves, meshes, pointclouds and points prompt , select the indicated edges:
    Note the edge that is set to G2

    Note the edge that is set to G2

  4. Right-click to open the Patch dialog and preview the result:
  5. In the dialog, press OK to create the surface:
  6. Turn off layer helping-surfaces.
  7. Select the untrimmed patch.
  8. Run the Mirror command.
  9. In the prompt , select the YAxis option to mirror the surface along the Y-axis.
  10. Select the untrimmed patch and its mirrored copy.
  11. Run the Zebra command.
  12. Set the Mode to Rainbow if it’s not already.
  13. Double-click the original (left) patch surface to enter Edit Mode.
  14. Turn on the layer internal: frame. It contains a point object.
  15. In the dialog, select the Constraints button.
  16. Select the point object. Points will always be internal automatically.
  17. Right-click to validate.
  18. In the dialog, press OK to create the patch surface. We now have a better surface flow where the surfaces meet.
    The point now influences and improves the flow of the surface.

    The point now influences and improves the flow of the surface.

  19. In the Zebra panel, select the toggle to deactivate the analysis.
Tip
If you create the Patch with History on, you can now tune the point object location and have the surface update. For finer movements, use DragStrength set to 10 or lower.

Complete the Body

As a brush is essentially a symmetric product, in a simple two-step mirroring of the surfaces, we will obtain all the geometry that represents the brush’s main body. This includes the handle and frame surfaces.

  1. Continue with your file or download patch-brush-body.3dm.
  2. Turn off all internal: layers.
  3. Select the handle and side surface
    Select the surfaces in yellow to mirror.

    Select the surfaces in yellow to mirror.

  4. Run the Mirror command.
  5. In the Command Prompt , select the YAxis option.
  6. Select all surfaces this time.
  7. Run the Mirror command again.
  8. In the Command Prompt , select the ZAxis option.
    Top and bottom surfaces have been created.

    Top and bottom surfaces have been created.

Create the Soft Cushion

In this section, we will use Patch once more. It will help us create a puffed surface that represents the cushion holding the bristles. It will meet at a hard angle or G0 to its adjacent surface edges. This will help create the visual separation between the body and the cushion as distinct parts of the brush.

  1. Continue with your file or download patch-brush-cushion.3dm.
  2. Make cushion the current layer .
  3. Turn on layer internal: cushion.
  4. Run the Patch command.
  5. Double-click to select the loop of edges.
  6. Shift-click on one continuity dot until they are all set to G0 .
  7. Select the two internal curves (orange).
  8. Set the internal curve dots to I .
    Selecting input geometry and setting continuity in Patch

    Selecting input geometry and setting continuity in Patch

  9. Press to bring up the Patch dialog.
  10. The Domain should automatically be set to Projected.
  11. Turn on Refine and press OK to create the patch.

Add the Bristles

In this section, we’ve prepared a Grasshopper definition to automatically add the bristles to the cushion surface. The main advantage of creating it in Grasshopper is that the bristles can be adjusted parametrically. Play with the sliders in the definition to adjust length and radius.

  1. Continue with your file or download patch-brush-bristles.3dm.
  2. Run Grasshopper . It will open the canvas.
  3. Download and open patch-brush.gh.
  4. The definition should automatically pick up the cushion patch, use the points in the pts layer, and generate the bristles.
  5. In the Grasshopper canvas, modify the Line or Radius Number Slider .
  6. Set the to Raytraced Display Mode
    Add the bristles with Grasshopper and adjust them parametrically.

    Add the bristles with Grasshopper and adjust them parametrically.