A hollow part prints faster, uses less material, and often prints better than a solid one. Rig Cad gives you three ways to get there: a 2D inward offset plus a floor for anything prismatic, the Shell post-processing step for any 3D body, and Infill for a shell filled with lattice. This article builds the first two side by side and then covers the one question that decides whether the print survives: how thick the wall has to be.

Three ways to hollow a part

Table: Hollowing routes and where each one belongs.

Route Works on Wall is Opens the top by Notes
2D offset plus floor Prismatic parts: boxes, trays, cups with straight walls Exact and constant, from a true normal offset Being open from the start Cheapest and most predictable; the wall is a 2D fact
Shell post-processing step Any solid, including blended and revolved bodies Uniform by construction, In, Centred or Out A Difference with a cutter above the shelled node Runs on the SDF, mesh and NURBS solvers; closed unless you cut it
Infill step Any SDF-evaluated solid An outer skin plus a lattice inside Not usually opened Field-only; see the Pattern 3D article

The first route is the one to reach for whenever the walls are vertical, because the wall thickness is a number you typed rather than a surface the kernel computed. The second is for everything else.

The 2D route: inward offset plus a floor

The blue box in the demo is two extrusions in a Union. The walls are the outline minus the same outline offset inward by wallThickness, extruded to boxHeight; the floor is the plain outline extruded to floorThickness.

Diagram: The offset-box tree. A union of two extrudes: the wall ring, which is a 2D difference of the outline and its inward offset, and the floor plate.

flowchart TD
  U["Offset_Box (union)"] --> W["Offset_Walls (extrude, boxHeight)"]
  U --> F["Floor_Plate (extrude, floorThickness)"]
  W --> D["Wall_Ring (difference)"]
  D --> O["Outer_Outline (rectangle, cornerRadius)"]
  D --> P["Inner_Offset (pathOp offset2d, -wallThickness)"]
  P --> O2["Outer_Outline_Copy (same rectangle)"]

Because offset2d moves every edge along its true normal, the wall is wallThickness on the straight sides and around the rounded corners alike; the inner corner radius is simply the outer radius minus the wall. When the wall exceeds the corner radius the inner corner becomes sharp, which is correct and also what a slicer would have done. The floor and the walls overlap by the floor's thickness, so the union has no coplanar seam to worry about. Sketches to Solids covers the Path Op node and the child-slot rule it needs.

The same construction scales to a tray with dividers, an enclosure with a lip, or a cup whose outline is any closed profile.

The Shell step and the order it needs

The orange container is a rounded box with a Shell step on its post-processing stack. Shell offsets the whole surface inward and keeps the material between, so the result is a closed, hollow body. Its options:

  • thickness, bound in the demo to shellThickness.
  • mode: In keeps the outer dimensions and carves the cavity inside them, which is what a part with a fixed footprint wants; Out keeps the original surface as the cavity and grows the wall outward; Centred splits the difference.
  • offset_method: CP is faster and keeps the surface structure; Tess follows difficult curved surfaces more closely.
  • Mesh, corner and miter settings that only matter when the input is a 2D path.

Shell runs on the SDF, mesh and NURBS solvers, so it works on the blended and revolved bodies that the 2D route cannot touch.

A closed hollow is not a container. To open it, the demo puts the shelled body inside a Difference with a Lid_Cutter box positioned at boxHeight - shellThickness, and gates the cutter with openTop. The order is the whole point: shell first, cut second. Shelling an already-open body would wall over the cut face, because Shell follows every surface it is given, including the new opening.

How thick the wall has to be

The number that matters is not the wall you modelled but the wall the slicer can lay down. On an FDM printer the wall is built from extrusion lines of roughly the nozzle width, so a wall that is not a whole multiple of that width leaves a gap or gets fattened. Two perimeters is the practical minimum for a wall that has to hold its shape.

Table: Practical wall targets. Treat these as starting points and calibrate on your own machine.

Process Minimum sensible wall Comfortable wall Why
FDM, 0.4 mm nozzle 0.8 mm (2 lines) 1.2 to 1.6 mm (3 to 4 lines) Whole extrusion widths; single lines are fragile and leak
FDM, 0.6 mm nozzle 1.2 mm 1.8 to 2.4 mm Same rule, wider lines
Resin (SLA/MSLA) 1 mm 1.5 to 2 mm Thin walls warp during cure; add a drain hole

The demo's wallCheck readout reports the thinner of the two walls so the number is always visible while you drag wallThickness and shellThickness. That is the readout pattern doing production work: the model cannot stop you from typing 0.5, but the configurator can say so.

A wall also has to be thick enough for what it does. A snap fit needs the strain margin in Threads and Snap Fits; a bore needs the allowance in Fits, Clearances, and Tolerances; a wall that carries lettering needs the stroke rules in Text as Geometry.

Checking a wall you cannot see

A hollow body looks identical to a solid one from outside. Three checks tell them apart:

  1. Volume. Object Properties reports the solved volume. A shelled box should report roughly the outer volume minus the cavity; if it reports the full outer volume, the step did not run.
  2. A cross-section. The Cross Section node, parked disabled under the part, is a standing section view that re-solves with the model and shows the wall as a ring you can measure.
  3. A top view. For the opened container, the top view shows the wall ring directly; a closed shell shows nothing, which is itself the answer.

If a shelled mesh comes back with self-intersections or boundary edges, the repair steps in Mesh Cleanup apply after the shell in the same stack. And once the wall is right, the weight and time savings feed straight into Pricing Customized 3D Prints.

Shell and hollowing demo
Project

Shell and hollowing demo

@p12/shell-and-hollowing-demo
Shell and hollowing demo
Shell and hollowing demo

Left: the 2D offset box, whose wall is wallThickness exactly. Right: the shelled container. Turn openTop off to see the closed hollow the Shell step produces on its own, and watch the wallCheck readout as you thin either wall.

@p12/shell-and-hollowing-demo
Left: the 2D offset box, whose wall is wallThickness exactly. Right: the shelled container. Turn openTop off to see the closed hollow the Shell step produces on its own, and watch the wallCheck readout as you thin either wall.

Where to go next

A hollow with a lattice inside instead of air is the Infill step, covered with the rest of the field operations in Pattern 3D. The rounded outer body of the demo container comes from the primitive corner radius in Fillets and Chamfers. And if the shelled mesh is slow to solve or heavy to export, Why Is My Model Slow? and Export for the Slicer are the two follow-ups.