Upload an exploded NURBS shell to begin.
About SubD Panelizer·Split a panelled SubD shell into panels, classify mullions vs transoms, and frame the curtain wall.

What SubD Panelizer does

Reads a curtain-wall shell that's already split into one surface per panel, finds the seams shared between neighbouring panels, and labels each seam a mullion (vertical) or transom (horizontal). It reports a per-panel area/warp schedule and frames the wall with mullion/transom profiles banked to the surface normal — handling double-curved geometry. It does NOT subdivide a smooth surface for you: the panels must already exist as separate surfaces.

Input:
.3dm — one surface per panel
Reads:
Mesh boundary (not Brep trims)
Panels out:
Original NURBS surfaces

How it works

Each Rhino surface object is treated as one panel. Panel boundaries, corners and normals are read from the render mesh — not rhino3dm Brep trim/loop topology, which is unreliable in the browser. Seams are the edges two panels share.

  • Boundary loop via half-edge tracing: a directed edge is on the boundary when its twin never appears.
  • Corner detection by turning angle — vertices whose boundary turn exceeds the corner-angle threshold; adjacent flagged vertices collapse to the sharpest.
  • Best-fit plane normal by Newell's method; warp = max vertex distance from that plane.
  • Seams matched by quantized shared endpoints; shared-by-2 = interior (mullion/transom), shared-by-1 = perimeter.
  • Mullion vs transom from the seam's angle above the horizontal (Z-up), at the vertical-threshold knob.
  • Frame members are swept tubes banked to the averaged adjacent-panel normal (bisecting the dihedral on curved walls).

How to use it

  1. Convert the SubD — unpacked. In Rhino, select the SubD and run ToNURBS with PackFaces=No, so every SubD face becomes its own NURBS surface instead of merging into one polysurface.
  2. Explode into separate surfaces. Run Explode on the result so each panel is an individual surface object — that adjacency is what the tool reads.
  3. Isolate and export. Put the panels on their own layer, then Export selected to .3dm (keep your model units — metres or mm are both fine).
  4. Upload and pick layers. Drop the .3dm in, then tick only the layers that are facade panels under "Layers to panelize" — cores, slabs and context stay out.
  5. Tune corners & direction. Adjust the corner-angle slider until Corner issues reads 0, and the vertical-threshold slider to split mullions from transoms the way your wall reads.
  6. Frame and export. Set mullion/transom widths and depths, preview the solid frame, then Export .3dm — panels come back as NURBS, frames as meshes.

Best used for

  • Counting and scheduling panels, mullions and transoms on a double-curved facade.
  • Spotting which panels warp most (flag candidates for flat-panel vs cold-bent).
  • Generating a first-pass mullion/transom frame to refine in Rhino.

Not a substitute for

  • Subdividing a single smooth surface into a panel grid — panel it first (in Rhino/Grasshopper).
  • Fabrication-grade frame solids straight out — frames export as meshes (MeshToNURB or re-sweep in Rhino).
  • Structural sizing — profiles are geometry only, no engineering check.

Known limits

  • One Rhino surface object = one panel. A joined polysurface reads as a single panel with no seams.
  • Panels need detectable corners; a fully smooth closed loop (e.g. a ring) won't resolve sides — see Corner issues.
  • Frame members export as meshes (no NURBS sweep kernel in the browser); panels themselves export as the original NURBS.

Read the full SubD Panelizer guide →

SubD Panelizer | ArchiTool