B-Rep vs mesh: which CAD geometry gives better robot joints?
The single biggest accuracy lever in CAD-to-URDF conversion is which geometry format you start from — and it's not close.
B-Rep (STEP, IGES)
Boundary representation stores a part as exact analytic surfaces — planes, cylinders, cones, torii, splines — and the curves and vertices where they intersect. A cylindrical hole is a genuine cylinder primitive with a precise axis and radius, not an approximation. See our STEP-to-URDF guide for the conversion details.
Mesh (STL, OBJ, PLY, GLB, glTF, DAE)
A mesh represents the same part as a soup of flat triangles. It can approximate any shape, including organic/scanned geometry B-Rep can't cleanly express — but a cylindrical surface is now hundreds of near-planar facets. There's no explicit "this is a cylinder with this axis" data left; it has to be recovered by fitting.
What this means for joint inference
| B-Rep (STEP/IGES) | Mesh | |
|---|---|---|
| Joint axis | Exact, read from the surface | Estimated by fitting/heuristics or ML |
| Joint type detection | High confidence from surface pairs | Lower confidence; conservative tools may leave ambiguous joints fixed |
| Best for | Mechanical assemblies with pins, bores, slides | Scanned parts, organic shapes, when B-Rep isn't available |
Jointly uses whichever geometry you give it — exact B-Rep axes from STEP/IGES, or heuristic/ML joint inference from meshes — and is deliberately conservative on meshes: it would rather mark a joint fixed than emit a confidently wrong axis. See a concrete example of this in converting a forklift assembly.
Skip the manual work
Jointly does everything on this page automatically: drop in your CAD (STEP, mesh, SolidWorks or Onshape), and it infers joints, axes, inertia and collision, then exports a simulation-ready URDF, SDF, MJCF or USD. The first conversions are free.
Try Jointly free →