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…
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.
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.
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:
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.
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.
Sometimes curves can be both open and non planar…
So you may need to fix both problems!
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.
Hope this small explanation makes someone's life a bit easier…