The fastest way to deal with “thicken” some curvy thing (BrepFace etc) is to make a Mesh (say: using Mesh Machine) and then do the job. If the curvy thing is a collection of BrepFaces (polysurface in Rhino speak) then this approach is realistically speaking the only one.
This does the attached (works with any Mesh List) in 4 user controllable phases (variable: progress, try it and see what I mean) . Phase 4 yields a solid mesh (always in Mode2, in most of cases in Mode1 [ I must add some lines related with that matter]) There’s the usual bad news associated with replies of mine (the code only part) … but nobody’s perfect, he he.
TriMesh_thickenWithHoles_V1.3dm (160.4 KB)
TriMesh_thickenWithHoles_V1.gh (132.6 KB)
Note: If offset is set to real (as opposed to proportional) C# does some calculations and if the offset is not possible (or less that some user controlled values) displays the faces that are left with no holes (yellow).
But the thing is that it uses mesh vertices Normals to do the job … meaning that the thickness per face (3 distinct pieces) varies slightly for more than obvious reasons. The good news are that the skin is smooth (no “gaps” from face to face). See what “gaps” mean in a similar case that I’ve posted recently (with Voronoi polylines):
Of course I could address the problem differently and achieve equal thickness pieces at the cost of a “rough” inner (or outer) skin But since you are after some toy model (Styrofoam or other) why bother? Who’s gonna notice it? And since 3d printing does everything these days (including food in some glitz(?) LA restaurants) why bother? And generally … why bother?
On the other hand … in real life … well … we don’t do things like these with that way in real life so why bother?
Note: if you are crazy about order on things use Times New Roman as Standard Fond (if Rhino crashes there’s other ways to do that by editing the Kernel xml file) other wise the C# and the parameters would end up in an ugly topological mess (I hate that):