Create Solids from Curves

What is a Solid in Rhino?

In Rhino, a Solid is any Surface or Polysurface that is watertight and therefore encloses a volume. When all edges of a surface or group of surfaces are joined with no gaps, Rhino treates the object as a Solid.

Rhino can generate serveral types of solids like:

  • Single-surface Solids
  • Polysurfaces
  • Extrusions
  • Solid Meshes or (Mesh Solids)?
  • Solid SubDs or (SubD Solids)?

Single-Surface Solids

A single NURBS surface can be designed so that it wraps around and joins itself into a closed form. Rhino creates these shapes usings commands such as Sphere , Torus , and Ellipsoid . In order to edit this type of solids, you have to turn on their Control Points to manipulate the shape.

PolySurfaces

A Polysurface is created combining several surfaces and are joined together into one closed volume. Primitive polysurfaces commands are:

These solids are composed of multiple surfaces, each contributing to the final closed form.

Extrusions

Extrusions are created when a curve or a surface is extended in a straight direction to generate a closed, volumetric form. They are one of the most efficient solid types because they maintain a lightweight mathematical structure and are easy to edit. Extrusions are generated using the Gumball Extrude Handles or using these Rhino commands:

Extrusions vs Polysurfaces
Unlike polysurfaces, extrusions are lightweight objects that uses less memory, meshes faster, and saves smaller than the traditional polysurface, making the geometry more effecient.

Solid Modeling Fundamentals

In this guide, we will explore the fundamental tools and techniques for creating and editing solid geometry. You will learn how different types of solids are created and walk through essential editing commands such as Rebuild , BooleanUnion , FilletEdge , BlendEdge and more to maintain a watertight model.

By the end of this guide, you will have a clear understanding of the solid-modeling workflow in Rhino and the best practices for producing a clean, reliable geometry for design, visualization, and fabrication.

Solid Creation

Before starting any project in Rhino, it is essential to set up your units to ensure accuracy throughout your work. For this tutorial, we will be using centimeters as our units of measurement.

As the project progresses, we will toggle layers on and off as needed and organize objects into appropriate layers to keep the geometry structured and the workflow clean and efficient.

To get started, click on the following link to download the Rhino file: Solids.3dm.

The project is divided into six parts:

  1. Rainbow Pipes.
  2. Wavy Box.
  3. Curvy Box.
  4. Cylindrical Post.
  5. Space Ball.
  6. Chameleon.
  7. Base

Lets get started!

Rainbow Pipes

For the first geometry, we will need to create some profile curves to create a solid using the pipe command.

Creating the Base Curve

  1. Maximize the viewport.
  2. On the Layer panel, find the Rainbow layer and make the crvs sub-layer current .
  3. Run the Rectangle command.
  4. For the First corner of rectangle, type 0. Press .
    Coordinate Entry Tip
    Typing 0 for the first point will always snap the first point at the (0,0,0) coordinates.
  5. For Other corner or length, type 3. Press Enter.
  6. For Width, type 8. Press Enter.

Rounding the Profile Curve Corners

  1. Run the Fillet command.
  2. On the command prompt make sure: (Radius=1.5 Join=Yes Trim=Yes ExtendArcsBy=Arc ExtendOtherCurvesBy=Line Dynamic=No).
  3. Type 1.5 for the radius. Press Enter.
  4. For First curve to fillet, select the right curve of the rectangle.
  5. For Second curve to fillet, select the top curve of the rectangle.
  6. Repeat the Fillet command on the left and top curves of the rectangle.

Now, we need to delete the bottom curve by using sub-object selection. Here’s how:

  1. Hold down the and buttons on your keyboard to Sub-object select the bottom curve of the rectangle and press the button.

Create Copies of the Profile Curve at a Specified Distance Using the Offset Command

  1. Run the Offset command.
  2. Type 0.25 for distance. Press Enter.
  3. For Select curve to offset, select the arch.
  4. Click inside the arch for direction.
  5. Repeat the offset command on each new curve untill you create 5 offsets which results in 6 curves in total.

The completed steps should produce the following results:

The following GIF demonstrates the full workflow: redo gif to show sub-obj sel with spot on mouse??

rainbow-crvs-complete.gif

Create a Solid with the Pipe command

  1. Maximize the viewport.
  2. On the Layers panel, make the Rainbow: pipe sublayer current.
  3. Run the Pipe command.
  4. For Select rail, click on the second arch.
  5. On the command prompt , make sure: (Output=Surface Thick=No Cap=Flat ShapeBlending=Local FitRail=No).
  6. For Start radius, type 0.25. Press Enter.
  7. For End radius, type 0.25. Press Enter.
  8. Repeat the Pipe command for every other arch.

The following GIF demonstrates the full workflow:

rainbow-pipe.gif

Wavy Box

Creating the Base Curve

  1. Turn the Rainbow layer off .
  2. On the Layer panel, find the Wavy Box layer and make the crvs sub-layer current .
  3. Maximize the viewport.
  4. Run the Rectangle command.
  5. For the First corner of rectangle, type 0. Press .
  6. For Other corner or length, type -5. Press Enter.
  7. For Width, type 4. Press Enter.

To get the trapezoid shape. We will use the Gumball to move one control point on the top left corner of the rectangle. Here’s how:

  1. Select the rectangle and click on the top left control point of the rectangle.
  2. Click on the Gumball red move handle , type 2.

The following GIF demonstrates the full workflow:

wavy-box-rec.gif

Creating the Arcs

  1. Run the Explode command.
  2. For Select objects to explode, select the trapezoid. Press Enter.
  3. Run the Divide command.
  4. For Select curves to divide, select the tilted curve on the left side of the trapezoid.
  5. For Number of segments, type 7. Press Enter.
  6. Make sure the Point Osnap is enabled.
  7. Run the Polyline command.
  8. For Start of polyline, click on the first point at the top end of the curve.
  9. On the command prompt , click on: (Mode = line) and change it to (Mode = Arc).
  10. Again on the command prompt , click on (Direction) and hold down , then click anywhere in the negative X-axis direction.
  11. For Next point or polyline, select each point untill you reach the end of the line.
  12. Select the tilted curve. Press .
  13. Run the SelPt command. Press Delete.
  14. Run the Join command.
  15. For Select objects to join, select all the curves. Press Enter.

The following GIF demonstrates the full workflow:

wavy-box-crvs-complete.gif

Extrude

  1. Maximize the viewport.
  2. Make the Wavy Box: extrude sub-layer current.
  3. Select the shape and click on the Green Gumball Extrude Handle .
  4. Type 3. Press Enter.

The completed steps should produce the following results:

Best Practice
In Rhino, creating a clean, well-constructed, closed curve – with the least amount of control points – produces a clean and efficient extrusion.

Fillet Edge

  1. Run the FilletEdge command.
  2. For Select edges to fillet, type 1.
  3. Select the top right edge of the extrusion. Press Enter.
  4. Press Enter again to end the command.
  5. Run the FilletEdge command again, type 0.1.
  6. Double click on the top edge to chain the edges.
  7. Do the same to the edges on the left side of the extusion. Press Enter.
  8. Press Enter again to end the command.

The following GIF demonstrates the full workflow: wavy-box-fillet.gif

Curvy Box

The Box

  1. Maximize the viewport.
  2. Turn the Wavy Box layer off.
  3. On the Layer panel, find the Curvy Box layer and make the box sub-layer current .
  4. Run the Box command.
  5. For First corner of base, type 0,-3.5.
  6. For Other corner of base or length, type 4,-0.25.
  7. For Height, type 3. Press .

The Circles

  1. Maximize the viewport.
  2. Run the Circle command.
  3. Make sure the End snap is enabled.
  4. For Center of circle, select the bottom right corner of the box.
  5. For Radius, type 2.5. Press Enter.

Let’s create another circle with two-points:

  1. Make sure the End and Int Osnaps are enabled.
  2. Run the Circle command again.
  3. On the command prompt , select (2Point).
  4. For Start of diameter, select the top right corner of the box.
  5. For End of diameter, select the point where both circles intersects.

The following GIF demonstrates the full workflow: curvy-box-circle.gif

Gumball Cut and Boss

  1. Maximize the viewport.
  2. Make sure the Gumball is enabled.
  3. Select the large circle, then drag the green cut handle on the Gumball to cut straight through the box.
  4. To Boss: Select the smaller circle, hold down the key on your keyboard.
  5. Click on the Gumball greed cut handle, type 3.25. Press .
  6. Run the SelCrv command to select the curves in the scene. Press .

The following GIF demonstrates the full workflow:

curvy-box-cut-boss.gif

Gumball Boss
The Boss feature on the Gumball adds an extrusion to the intersected object and unites both objects into one polysurface, similar to the BooleanUnion command.

Fillet Edges

  1. Run the FilletEdge command.
  2. For Select edges to fillet, type 1.
  3. Select the straight edge on the top left of the extrusion. Press Enter.
  4. Press Enter again to end the command.
  5. Run the FilletEdge command again.
  6. For Select edges to fillet, type 0.5.
  7. Select the bottom two edges on the left and right side of the extrusion. Press Enter.
  8. Press Enter again to end the command.

Fillet Face Edges

  1. Run the FilletEdge command one more time.
  2. Type 0.1. Press Enter.
  3. On the command prompt, select (FaceEdges).
  4. Select the front and back faces of the extrusion. Press Enter.
  5. Press Enter again to end the command.

The fillet workflow is demonstrated in the GIF below:

curvy-box-fillet.gif

The Cylindrical Post

  1. Maximize the viewport.
  2. Change the Display Mode to Wireframe.
  3. Make the Curvy Box: cylinder sub-layer current.
  4. Run the Cylinder command.
  5. For Base of cylinder, find a place on the top cplane for the base point.
  6. For Radius, type 3.5.
  7. For End of cylinder, type 0.5.

The Top view in wireframe should look as follows:

In the next stage of this process, we will complete the cylinder post by using sub-object selection by holding down the Shift and/or Ctrl keys on your keyboard along with the Gumball Extrude Handles. That way we can control the direction and scale of the extrusion, allowing us to manupilate the shape and acheive the desired outcome and propotion.

Creating the Post

  1. Maximize the viewport.
  2. Change the Display Mode back to Shaded.
  3. Hold down the and keys on your keyboard to activate sub-object selection .
  4. Select the top face of the cylinder.
  5. Click on the Gumball Blue Extrude Handle.
  6. Type 0.25. Press .
  7. Repeat the same process twice on the new faces.
  8. Now select the top face of the last extrusion but this time type 2.5. Press Enter.

The following GIF demonstrates the full workflow: cylinder-post-start.gif

The result is a closed solid polysurface with 7 surfaces:

Manupilating the Post with the Gumball

  1. Hold down the Shift and Ctrl keys on your keyboard and select the third surface from the bottom.
  2. Hold down the Shift key and drag the Red scale handle on the Gumball to scale the surface outwards uniformly.
  3. Drag the Green scale handle to scale the surface in one direction.
  4. Using the sub-object selection method: Select the bottom edge of that same surface to scale it uniformally.
  5. Do the same for the top edge.
  6. Drag a crossing window from left to right to select objects entirely inside the window and highlight the diamond result.
  7. Move it using the Gumball move arrow in the Z direction.
  8. Keep manipulating the edges and faces untill you end up with the desired shape.

The following GIF demonstrates the full workflow:

cylinder-post-gb.gif

Fillet

  1. Maximize the viewport.
  2. Hide the Box layer.
  3. Run the FilletEdge Command.
  4. For Select edges to fillet, type 0.1. Press Enter.
  5. On the command prompt, select (FaceEdges).
  6. For Select polysurface faces for filleting all adjoining edges, drag a crossing window to select all edges of the post.
  7. Press Enter when done.
  8. Press Enter again to end the command.

You should now see a result similar to the following:

The Sphere

  1. Maximize the Front Viewport.
  2. On the Layer panel, make the Cylinder Post: sphere sub-layer current .
  3. Make sure the Cen Osnap is enabled.
  4. Run the Sphere command.
  5. On the command prompt, select (2Point).
  6. For Start of diameter, hover over the top surface of the cylinderical post to snap to its center.
  7. For End of diameter, type 0.7.
  8. Hold down shift to activate ortho.
  9. Click to end the command.

You should now see a result similar to the following:

Space-Ball

In this excersice, we will model a space-ball. We will begin by creating a basic sphere, then apply the Rebuild command to give it more structure. Next we will extract the iso-curves using the ExtractWireframe command and use their intersection points as guides to place smaller spheres. Finally, we will combine all the spheres using the BooleanUnion command to produce a single, closed polysurface.

  1. Turn the Wavy box and Curvy Box layers On.
  2. Maximize the viewport.
  3. On the Layer panel, find the Space Ball layer and make the ball sub-layer current .
  4. Run the Sphere command.
  5. For Center of sphere, find a place between the boxes.
  6. For Radius, type 1.25.
  7. Maximize the viewport.
  8. Use the Gumball Move Handles to position the sphere on the construction plane.
  9. Turn the Wavy box and Curvy Box layers off.

Rebuild and Wireframe

  1. Make the wireframe sub-layer current .
  2. Run the Rebuild command.
  3. For Select curves, extrusions or surfaces to rebuild, select the sphere.
  4. The Rebuild surface settings window will appear.
  5. Change the Point count and Degree to the following:
    Point Count: U=8, V=8.
    Degree: U=3, V=3.
    Delete Input: Checked.
    Current Layer: Checked.
    ReTrim: Checked.
  6. Click Ok.

ball-rebuild-settings.png

What happens when you rebuild a surface?
Rebuilding a surface creates a new surface with a different internal structure. By choosing the number of control points and surface degree you can control how much the surface changes and keep it within an acceptable range for your design.
  1. Run the ExtractWireframe command.
  2. For Select surfaces, solids, meshes or SubDs to convert to curves, select the sphere. Press Enter.
  3. Turn the ball sub-layer off .
  4. Make sure the Int Osnap is enabled.
  5. Run the Sphere command.
  6. For Center of sphere, click on the wireframe intersection and create a small sphere.
  7. Repeat the Sphere command and create spheres with different radii at the intersections of the wireframe.

The following GIF demonstrates the full workflow:

ball-mini-spheres.gif

  1. Turn the ball layer on .
  2. Make the ball layer current .
  3. Run the BooleanUnion command.
  4. On the command prompt, make sure: (DeleteInput=**Yes** and MergeCoplanarFaces=**Yes).
  5. For Select surfaces or polysurfaces to union, select all the spheres in the scene by dragging a crossing window. Press Enter.

The BooleanUnion command creates a closed polysurface.

You should now see a result similar to the following:

The Science behind the Boolean Union Command
The BooleanUnion command trims the shared areas of selected polysurfaces or surfaces and creates a single polysurface from the unshared areas.

The Chameleon

In this part of the exercise, we will create an abstract chameleon by building its form from simple shapes such as polylines, circles, and spirals. These curves will be refined using basic curve-editing tools like , Offset, Trim and CurveBooleon. Once the curves are closed, they will be extruded to form closed polysurfaces. Finally, we will apply solid modeling tools, such as FilletEdge and BlendEdge, to soften and refine the edges, resulting in a smooth and cohesive 3D form.

Creating the Chameleon Outline: The Circles

  1. Maximize the viewport.
  2. On the Layer panel, find the Chameleon layer and make the crvs sub-layer current .
  3. Run the circle command.
  4. For center of circle, type these X and Y corrdinates: 3,11. Press Enter.
  5. For Radius, type 1.2. Press Enter.
  6. Run the Offset command.
  7. Type 0.2 for distance.
  8. For Select curve to offset, select the circle.
  9. For Side to offset, select inside the circle for direction.

Creating the Chameleon Outline: The Lines

  1. Run the Polyline command.
  2. Make sure the Quad Osnap is enabled.
  3. For Start of polyline, select a point at the top quad of the first circle.
  4. For Next point of polyline, select the opposite point at the bottom quad of the first circle.
  5. Repeat the same steps to draw another polyline from the remaining quads so it crosses the first line.

You should now have two intersecting lines forming a (+) shape like the image below:

Creating the Chameleon Outline: Trim

  1. Run the Trim command.
  2. Drag your cursor from left to right to window select the circles and lines. Press Enter.
  3. Click on the unwanted curves to trim them away as illustrated in the GIF below:

The following GIF demonstrates the full workflow:

Chameleon-circles-trim.gif

Creating the Chameleon Body Parts: Curve Boolean

  1. Run the CurveBoolean command.
  2. On the command prompt , make sure: (DeleteInput=All CombineRegions=No Output=Curves SimplifyCurves=Yes).
  3. For Select curves, select all the trimmed curves.
  4. For Click inside regions to keep, pick a point inside the shapes to create the closed curves. Press Enter.

The following GIF demonstrates the full workflow:

chameleon-crv-boolean.gif

Creating the Chameleon Tail (Part 1): Spiral

  1. Make sure the Mid and End Osnaps are enabled.
  2. Run the Spiral command. Press Enter.
  3. On the command prompt: Select (Flat).
  4. For Spiral center, select the mid-point of the straight edge of third quadrant.
  5. For First radius and start point, type 0.1. Press Enter.
  6. Press Enter again.
  7. On the command prompt, make sure: (Turns=1).
  8. For Second radius, select the End point at the bottom of the quadrant.

The following GIF demonstrates the full workflow:

chameleon-spiral.gif

Creating the Chameleon Tail (Part 2): Offset

  1. Run the Offset command.
  2. For Select curve to offset, select the spiral curve.
  3. On the command prompt: make sure: (Cap=Round).
  4. For Distance, type 0.1.
  5. For Side to offset, click on the outter side of the curve to end the command.

The following GIF demonstrates the full workflow:

chameleon-spiral-offset.gif

Creating the Chameleon Tail (Part 3): Curve Boolean

  1. Run the CurveBoolean command again.
  2. On the command prompt, make sure: (DeleteInput=All CombineRegions=Yes Output=Curves SimplifyCurves=Yes).
  3. Select the bottom quadrant and the spiral curve.
  4. For Click inside regions to keep, click inside the third quadrant along with the tail outline to create a closed curve. Press Enter.

The following GIF demonstrates the full workflow:

chameleon-spiral-crv-boolean.gif

Creating the Chameleon Eyes: The Curves

  1. Make sure End and Mid Osnaps are enabled.
  2. Run the Polyline command.
  3. For Start of polyline, select the End Point at the center of the first quadrant.
  4. For Next point of polyline, snap to the midpoint of the arc on the chameleon head. Press Enter.
  5. Make sure Int and Near Osnaps are enabled.
  6. Run the Circle command.
  7. For Center of circle, find a place on the line but away from the edge for the center point.
  8. For Radius, type 0.15. Press Enter.
  9. Run the Circle command again.
  10. On the command prompt, select (Tangent).
  11. For First Tangent, hover over the circle and snap onto the intersection of the circle and line.
  12. For Second tangent type 0.1. Press Enter.
  13. Click on the line to end the command.
  14. Select the polyline. Press Delete.

The following GIF demonstrates the full workflow:

chameleon-eyes.gif

Creating the Chameleon Tongue: The Curves

  1. Run the Rectangle command.
  2. On the command prompt, select (3Point).
  3. For Start of edge, click on the end point where all quads meet.
  4. For End of edge, click on the opposite end point.
  5. For Width, type 3.5. Press Enter.

The following GIF demonstrates the full workflow:

chameleon-tongue.gif

Now that all the curves are closed and ready for extrusion, we will organize them into seperate layers to make modeling easier and effecient.

  1. Select each part of the chameleon.
  2. From the Layer panel, right-click on the layer name and click on Change Object Layer .

You should now see a result similar to the following:

Chameleon Solid: Extrude

The Head

  1. Maximize the viewport.
  2. Make sure the Gumball is enabled.
  3. Make sure the Chameleon: Head sub-layer is current.
  4. Hold down the Shift key to select the cameleon head with the larger circle for the eyes.
  5. Hold down the Shift key again and click on the Green Gumball Extrude Handle to extrude the curve in both directions. Type 0.25.

The Back

  1. Make sure the Chameleon: Back sub-layer is current.
  2. Select the chameleon back curve.
  3. Click on the Green Gumball Extrude Handle, type 0.25.

The Tail

  1. Make sure the Chameleon: Tail sub-layer is current.
  2. Select the chameleon tail curve.
  3. Hold down the Shift key again and click on the Green Gumball Extrude Handle to extrude the curve in both directions. Type 0.25.

The Eyes

  1. Make sure the Chameleon: Eyes sub-layer is current.
  2. Select the smaller circle for the eyes.
  3. Hold down the Shift key again and click on the Green Gumball Extrude Handle to extrude the curve in both directions. Type 0.125.

The Tongue

  1. Make sure the Chameleon: Tongue sub-layer is current.
  2. Select the rectangle curve.
  3. Hold down the Shift key again and click on the Green Gumball Extrude Handle to extrude the curve in both directions. Type 0.15.

You should now see a result similar to the following:

Chameleon Blend Edges

  1. Turn the Chameleon: Eyes, Back, Tail, and Tongue sub-layers off .
  2. Change the Display Mode to Ghosted.
  3. Run the BlendEdge command.
  4. For Select edges to blend, type 0.2. Press Enter.
  5. Drag your cursor from left to right to select all the edges of the chameleon head.
  6. Hold the Ctrl key to de-select the circles for the eyes. Press Enter.
  7. Press Enter again to end the command.
  8. Run the BlendEdge command again.
  9. For Select edges to blend, type 0.07. Press Enter.
  10. Select the circle edges for the eyes. Press Enter.
  11. Press Enter again to end the command.
  12. Change the Display mode back to Shaded.

The following GIF demonstrates the full workflow:
chameleon-blendedges.gif

  1. Turn the Chameleon: Head sub-layer Off.
  2. Turn the Chameleon: Eyes, Back, Tail and Tongue layers On.
  3. Run the FilletEdge command.
  4. For Select edges to fillet, type 0.07. Press Enter.
  5. Drag your cursor from left to right to select all the edges of the visible parts of the chameleon. Press Enter.
  6. Press Enter again to end the command.
  7. Turn the Chameleon: Head sib-layer On.

You should now see a result similar to the following:

FilletEdge or BlendEdge?
FilletEdge creates a simple rounded edge using a circular arc. It is tangent to the nearby surfaces, but the curvature is not smooth, so reflections may appear sharp. BlendEdge creates a smoother rounded edge with gradual curvature. It blends smoothly into nearby surfaces, resulting in smooth reflections.

Chameleon Bubbles

  1. Maximize the Viewport.
  2. Make sure the Mid Osnap is enabled.
  3. Run the Sphere command.
  4. For center of sphere, snap to the midpoint at the end of the tongue.
  5. For radius, type 0.4. Press Enter.

The following GIF demonstrates the full workflow:

chameleon-bubbles-top-view.gif

  1. Maximize the Viewport.
  2. Make sure the Gumball is enabled.
  3. Select the sphere.
  4. Hold down the key to make a copy.
  5. Using the Gumball red arrow handle, drag the sphere and move it in the z direction.
  6. Repeat the steps untill you have 4 copies.
  7. Select the second sphere in the scene.
  8. Hold down the key and drag the Gumball scale handle to scale the sphere uniformally.
  9. Move the sphere using the Gumball red arrow to slightly overlap it on the top of the first sphere.
  10. Repeat the previous steps using the Gumball handles along with the Shift key as needed to manupilate the size and position of each sphere.

The following GIF demonstrates the full workflow:

chameleon-bubbles-front-view-gb.gif

  1. Run the Group command.
  2. For Select objects to group drag a window with your cursor from left to right to select all the chameleon parts. Press Enter.
  3. On the layers panel, make all the layers visible.

Now that all the chameleon parts are grouped together, we need to move the group into our scene using the Gumball move arrows. We will place it on top of the rainbow pipes created earlier, making sure it is properly aligned and visually balanced.

The Base

  1. Maximize the Viewport.
  2. Run the Cylinder command.
  3. For Base of cylinder, type 0.
  4. For Radius, type 8. Press Enter
  5. For End of cylinder, type -1. Press Enter.

The final outcome should match the image below:

Congratulations! You now have a solid understanding of the solid modeling fundamentals.
This marks the end of the solid modeling tutorial. Throughout this tutorial, we demostrated how to create solids from primitives and from joining simple curves, and now you should have a clear understanding of how to edit and manipulate them using solid editing commands to produce water-tight models.