For 3D printing purpose, such a shell command does not need to be anally precise. However, the resulting output does need to be able to be manipulated with 3D booleans.
I note that the V8 WIP fails here, producing the same bad result.
I need to be able to add be able to do additional work with the object after the basic shelling is complete. In the previous example, I have added a cylindrical reenforcement over a door opening and details that I do not want to complicate the shelling.
I have been doing a lot of 3D printing over the past few months. The need for shelling an offsetting surfaces is critical. For 3D printing purposes, these functions do not need to be 100% precise. While there are some cases where I need a precise offset, I rarely need a 100% precise shelling.
I get the sense that Rhino wants to be to precise in both of these which results in poorly formed open polysurfaces that should be closed.
The file example you provided has a relatively loose tolerance setting. While I cannot be absolutely certain that the tolerance is the reason for the failure, it certainly is a possibility depending on how the object was created.
Typically tolerance should be at least an order of magnitude greater than the smallest difference allowable in the intended manufacturing process … Unless perhaps you initially created the object at a higher tolerance and then reduced it for shelling?
Unfortunately if the object was created with this tolerance, its not possible to tighten the tolerance now without essentially reconstructing the object with a tighter tolerance.
I have played with tolerance a lot with shelling and offsetsrf. I find it has little effect. In that file, the tolerance used was 1/128" which was intended to be smaller than the smallest details.
The problem with Shrinkwrap is that after shelling, one needs to add connection points to link to other assemblies. Shrinkwrap appears to create a mesh that is the terminal stage in the development process.
I think there is some confusion here about your intended result. 3D printing which would indicate a mesh would satisfy the requirement; however, to use it in an assembly you obviously want clean CAD surfaces rather than going the ShrinkWrap > Quads > Nurbs route for the interior and then boolean difference that from the solid that is the exterior.
I assume you have thought of this … Perhaps you could simplify the exterior shape exclusively for producing the interior surface and offset / shell that, then subtract that from the exterior solid?
Ultimately, you have to get to a mesh. However, shelling/offsetsrf are key steps for preparing for 3D printing. However, they are rarely the last step in the process.
Here is another example, a ship hull. This is composed of 67 surfaces. It needs to have bolsters and bilge keels added. It needs bulkheads for internal support a division points. It needs mounting points for struts It needs mounting points for rudders.
None of those things can be added until there is some thickness in the hull.
I saved the intermediary objects in the file and moved them to the side, so you can see the ShrinkWrap object with the offset, Quad Remesh subd object, and then the Nurbs object.
The interior is of course not as clean as reconstructing it manually, but maybe that could work.
The second image below has the isolines turned off.