Site Tools


Problems Capping Objects

Explanation of common capping failures and suggestions for fixing them

A common question on the Rhino newsgroup is “Why didn't my solid extrusion get closed?” or “Why can't I cap this object?”

In the case of the Extrude command, Rhino currently doesn't give any error messages or explanations of why the command didn't work as expected. It just fails silently, leaving the inexperienced user to wonder what they did wrong.

In the case of the Cap command, you get a message unable to cap that object, which isn't very helpful to diagnose the problem. Hopefully the explanations and procedures on this page will help…

Extrusions that won't cap...

Check for bad objects first

The following is based on having valid objects. So, before you start, use SelBadObjects and make sure your objects are good (they shouldn't select). If there are bad objects, you need to fix them first. For more info on dealing with bad objects, see here.

OK, my objects are good. What's wrong then?

Rhino needs to have a closed, planar curve to create a cap surface. If an extrusion of a theoretically closed planar curve doesn't cap, even though you chose Extrude from the solid menu or clicked cap=yes in the command line, there are one of two things wrong…

Either:

1) the curve being used isn't closed, or
2) it isn't really planar.

Not closed

If there is no closed loop, Rhino cannot create a complete trim curve to create the cap surfaces. The object will extrude, but since the Rhino can't find a complete closed curve to trim the cap surface, it won't be created, and you will be left with an open extrusion. In Rhino 4, there is no error message given in this case.

How to find out if your curve is open? Several ways:

  • Use the command SelOpenCrv and see if it selects.
  • Use the command SelClosedCrv and see if it doesn't select.
  • Select the curve and look in Properties>Details (or use the command What). It should tell you if it's closed.

There are many methods to close an open curve, depending on what the problem is…

First, you need to find the open spot:

The commands CrvStart or CrvEnd will place a point at the start or end of the curve, which is where the opening will be found.

You may then turn on points and try moving one endpoint on top of the other with point snap or otherwise edit the object to close it.

Not planar

If you determine the curve is really closed (it didn't select with SelOpenCrv, or did select with SelClosedCrv, or Properties states it's closed), and it still won't cap, then it is virtually certain it isn't planar. It only needs to be microscopically off to make this command fail.

How to fix this case

You can use Project to CPlane or SetPts and set the curve to all the same level. If after that your extrusion caps, that was your problem.

Important note

Sometimes curves can be both open and non planar:-)
So you may need to fix both problems!


Existing objects that won't cap

A parallel to an extrusion not capping is an existing open polysurface that you think should cap but doesn't.

In that case, the opening to be capped should be considered in the same way as the curve that you wanted to extrude in the first example. That is, the loop that defines it is either open or not planar.

It may be open if the polysurface isn't fully joined. You can turn on naked edges to see if there are other naked edges besides the open edges to be capped.

Or, the opening you think is planar actually isn't.

Both of these cases will require a little more extensive repairs than a simple curve.

  • In the first case, you need to fix the surfaces so that they join up without any naked edges, except for the opening(s) you want to cap.
  • In the second, you need to find where the loop is not planar and fix the offending surfaces so they do form a planar loop when joined.

Hope this small explanation makes someone's life a bit easier…

rhino/capproblems.txt · Last modified: 2020/08/14 (external edit)