← Blog
Manufacturing 2026-05-10

Sheet-Metal Unfolding from Signed Distance Fields

Every commercial sheet-metal unfold algorithm walks a B-rep face graph. SDF kernels have no graph to walk. Here is how NeuroCAD plans to unfold anyway — using geodesics on the zero-isosurface.

#sheet metal#unfold#K-factor#bend allowance#SDF#geodesic#DIN 6935#press brake

30 years of unfold research, and they all assumed you had ribs to walk. SDF doesn’t. Here is how NeuroCAD unfolds anyway.


The problem the brochure won’t tell you

Every press-brake operator on the planet has the same morning ritual. Pull the 3D model from PDM. Press “Unfold”. Get a flat blank with bend lines. Send it to the laser. Bend it. Measure the part. Discover that the flange is 0.4 mm short of the drawing. Adjust the K-factor. Run it again.

This dance has been going on since the late 1990s, and the math behind it is genuinely old. Bend allowance — the extra length you add to the flat blank to account for the metal stretching around the bend — was being computed on slide rules before CAD existed. K-factor — the fraction of the sheet thickness where the metal neither stretches nor compresses (the “neutral axis”) — has a DIN standard from 1975. The whole industry runs on a single equation:

BA = (π / 180) × Bend_Angle × (Inside_Radius + K × Thickness)

That’s it. That’s sheet-metal unfolding.

So why is unfolding still a research problem? Because the equation is the easy half. The hard half is finding the bend axes, the flange faces, and the bend regions in your 3D geometry so you know where to apply the equation.

For 30 years, every commercial CAD vendor solved this the same way: they walked the B-rep — the boundary representation, the skin of the part stitched together from NURBS faces and trimmed edges. SolidWorks, Inventor, Creo, NX, Solid Edge, FreeCAD: all of them, without exception, treat sheet-metal unfold as a graph traversal over face-edge-vertex topology. Find the cylindrical face. That’s a bend. The two flat faces tangent to it are the flanges. The seam between them is the bend axis. Unroll the cylinder, and you have your flat pattern.

This works beautifully — if you have a B-rep.

NeuroCAD doesn’t.


What an SDF actually is

NeuroCAD is built on signed distance fields. Instead of storing the part as a stitched skin of trimmed surfaces, NeuroCAD stores it as a function: for any point in space, the function returns the signed distance to the nearest surface. Negative = inside the part. Positive = outside. Zero = on the surface.

A 1 mm steel plate, in NeuroCAD, is not a list of NURBS faces glued at edges. It is a function f(x, y, z) that returns about -0.5 deep inside the plate, +0.5 half a millimetre above the top face, and 0 exactly on the surface.

This sounds like a step backward. It isn’t. SDFs unlock things B-reps cannot do — variable topology editing without “InvalidEdgeReference” errors, lattice infill, blend-surface compositing, smooth booleans that don’t crash on thin slivers — and they fall out of the GPU-friendly math used in modern raymarching and machine learning. That is why NeuroCAD picked them.

But.

There are no edges in an SDF. There are no faces. There is no graph to walk.

Every published sheet-metal unfold algorithm assumes a graph that doesn’t exist in our representation.

That’s the publishable hole.


A 90° bend, drawn three ways

Here is the thing every press-brake operator already knows. A 90° bend on a 1 mm plate with inside radius 1 mm and K-factor 0.4:

 Top view of the bend, side profile:

      flange A           flange B
   ────────────╮        ╭────────────
              outer surface (outside of bend)
                ╲     ╱
                 ╲   ╱
        neutral   ╲ ╱      ← K × t below outer
        axis ────  ✱  ────
                 ╱ ╲
                ╱   ╲
              inner surface (inside of bend)
   ─────────────╯    ╰─────────────
       L_A = 20mm           L_B = 20mm
                inside radius r = 1 mm
                thickness t = 1 mm
                K-factor = 0.4

 Bend allowance BA = (π/180) × 90 × (1 + 0.4 × 1)
                  = 1.5708 × 1.4
                  = 2.199 mm

 Flat-pattern length = L_A + L_B + BA = 42.199 mm

In a B-rep CAD, the system finds the cylindrical face between the two flanges, measures its inside radius, looks up the K-factor table for the chosen material, and substitutes into the formula. Done.

In NeuroCAD’s SDF, there is no cylindrical face object to find. There is just the field. So we need a fundamentally different approach.


What NeuroCAD does instead

The trick is that an SDF actually carries all the geometric information a B-rep does — it just encodes it differently.

If you sample the gradient of the signed distance function on the zero-isosurface (the surface itself), you get the outward-pointing unit normal at every point. Free, no stitching, no parameter domain edge cases. That’s pure calculus.

If you sample the second derivatives of the SDF (the Hessian), you get the principal curvatures of the surface. Bend regions are where one principal curvature is roughly 1/r (where r is the inside-radius of the bend) and the other is approximately zero — exactly what a cylindrical bend looks like.

So our recipe is:

  1. Find bend regions by curvature segmentation. Where the SDF surface has one curvature ≈ 1/r and one ≈ 0, that’s a bend strip. Everything else is flat-flange territory.
  2. Trace the bend axis by following the direction of zero curvature inside each bend region (the direction the cylinder runs).
  3. Compute geodesic distance between flat-flange centres on the surface. This is the surface-walking distance — what the metal “sees” — not the straight-line distance through air. We compute it by solving the eikonal equation ‖∇f‖ = 1 directly on the zero-isosurface, which is exactly what an SDF gives you for free everywhere else.
  4. Lay it flat using an exponential-map-style projection: each surface point gets mapped onto the flat pattern at the same geodesic distance from a chosen reference flange, with the bend allowance computed by the standard K-factor equation in the bend strips.

Step 3 is the core idea. The geodesic on the SDF zero-isosurface is the SDF-native replacement for “walking edges of the B-rep”. The B-rep CAD asks “what is the next edge?” — NeuroCAD asks “what is the next infinitesimal step along the surface in the direction of steepest descent of geodesic distance?”

Both questions produce the same flat pattern. They have to, or NeuroCAD’s manufacturing output would not be trustworthy.


Why this matters for the shop floor

For most operators, the answer to “how does NeuroCAD unfold” should be: the same way as everyone else, with the same K-factor inputs. The math the operator types into the database — material, thickness, V-die opening, bend angle, K-factor, bend allowance — is identical in NeuroCAD and SolidWorks and FreeCAD. We are not re-inventing K-factor; DIN 6935 is the law. We are re-implementing the geometric reasoning that gets you to the equation.

The reason the operator should care is that the SDF representation comes with three superpowers the B-rep doesn’t:

  • Variable topology without crashes. Suppress a bend in the feature tree. SDF re-evaluates. No “downstream feature references invalid edge” dialog. Your fillet on the next bend doesn’t disappear into a NULL pointer.
  • Smooth booleans that don’t slivers. Two flanges meeting at a corner with a smooth-blend instead of a sharp corner relief — works out of the box with smooth-min compose operators.
  • Lattice infill in flanges. Honeycomb-relief sheet metal? Just compose a lattice field with the flange field. The unfold algorithm doesn’t care.

The hard part — getting the unfold to agree with B-rep CAD on the standard tests — is the publishable hole. NeuroCAD treats this as a contract: the SDF unfold and a NURBS/OCCT reference unfold of the same body must agree within an ε Hausdorff distance on the flat pattern. We call this the dual-kernel agreement contract, and it is enforced as one of six axioms (A1–A6) governing every SDF↔NURBS round-trip in the kernel.


What’s standing in the way

Let’s be honest about scope. We have not yet shipped a production SDF unfold. We have:

  • The SDF math including gradient sampling, smooth booleans, and Lipschitz-bounded compositions.
  • A NURBS lane for the B-rep reference.
  • A test contract design for the agreement axiom.
  • A roadmap that takes us from this paper to an Numisheet 2008 / 2022 benchmark replay.

What we don’t yet have is the unfold operator wired into the React workbench. Industrial unfolding requires:

  • Curvature segmentation tuned for sheet-thickness-to-radius ratios that real laser-cut blanks see.
  • Geodesic solver fast enough for parts with 50+ bends (think enclosures, electrical cabinets, aerospace duct work).
  • K-factor database integration, so designers don’t manually type 0.4 on every part.
  • DIN 6935 minimum-bend-radius compliance flagging at design time, before the operator wastes a steel coil.
  • Numisheet 2008 / 2022 benchmark replay for industry credibility.

We are publishing this paper before the implementation lands, because the dual-kernel agreement contract belongs in the literature. If we ship and only then publish, the contract looks like a marketing claim. If we publish and then ship, the contract is a falsifiable engineering commitment. NeuroCAD’s whole governance model is built around the latter.


What you can do with this today

If you are evaluating NeuroCAD for sheet-metal: the geodesic-on-zero-isosurface formulation is, as far as we have been able to find, an unaddressed corner of the implicit-surface literature when applied to industrial sheet-metal. We would welcome correspondence on counter-examples, alternative formulations, or convergence proofs we have missed.

If you are a press-brake operator who just wants the K-factor equation to work: we hear you. The plan is to make the SDF unfold so boring you forget the kernel under it isn’t a B-rep.


Status

NeuroCAD’s SDF kernel ships gradient sampling and smooth compositions in production. The NURBS reference lane ships. The sheet-metal workbench UI is a placeholder folder only — no unfold operator is wired through to the GUI yet. The SDF unfold algorithm itself is not implemented; this post describes a proposed algorithm, not shipped code. The dual-kernel agreement contract for sheet-metal unfold is a test-bucket design, not a passing test suite. Numisheet replay, K-factor database, DIN 6935 flagging are not yet implemented. Treat every claim about runtime behaviour as proposed, not delivered.

Ready to design differently?

Request early access to NeuroCAD.

Request Access