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
- 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.
- Explode into separate surfaces. Run Explode on the result so each panel is an individual surface object — that adjacency is what the tool reads.
- 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).
- 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.
- 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.
- 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.