"Great customer service. The folks at Novedge were super helpful in navigating a somewhat complicated order including software upgrades and serial numbers in various stages of inactivity. They were friendly and helpful throughout the process.."
Ruben Ruckmark
"Quick & very helpful. We have been using Novedge for years and are very happy with their quick service when we need to make a purchase and excellent support resolving any issues."
Will Woodson
"Scott is the best. He reminds me about subscriptions dates, guides me in the correct direction for updates. He always responds promptly to me. He is literally the reason I continue to work with Novedge and will do so in the future."
Edward Mchugh
"Calvin Lok is “the man”. After my purchase of Sketchup 2021, he called me and provided step-by-step instructions to ease me through difficulties I was having with the setup of my new software."
Mike Borzage
January 30, 2026 13 min read

In reverse engineering, the fastest path from a physical artifact to editable CAD is the conversion from a polygonal scan to a boundary representation, or Mesh-to-BRep. Meshes excel at capturing raw shape from sensors, but they are indifferent to intention, tolerances, or manufacturability. B-Reps, by contrast, encode analytic and freeform surfaces, edges, and vertices as a coherent topological graph with tolerances. That difference is not semantic nitpicking; it’s the difference between a frozen snapshot and a model you can measure, constrain, and change. When parts must be retooled, improved, or checked against GD&T and downstream CAM, losing time in hand cleanup is expensive. The central goal, therefore, is to recover not only geometry, but also the design intent that enables robust edits and reliable manufacturing decisions.
Scans typically arrive as “triangle soups”: variable-density facets, inconsistent or flipped normals, ringing or speckle noise, and frequent non-manifold artifacts such as internal walls and self-intersections. Even “watertight” meshes can have sliver triangles and micro holes. A B-Rep replaces those triangles with analytic or freeform surfaces—planes, cylinders, cones, spheres, tori, or trimmed NURBS—and a consistent topology that distinguishes faces, edges, and vertices. A single cylindrical face may cover what thousands of triangles approximate. This compactness is not merely memory efficiency; it supports clean intersections, precise offsets, and predictably behaved booleans. With explicit tolerances, a B-Rep can declare two edges coincident within, say, 10 microns, enabling stable fillets, shells, and drafts.
Converting from mesh to B-Rep is more than curve fitting. It is an orchestrated pipeline that cleans and resamples the mesh, detects and segments features, fits primitive and freeform surfaces, constructs trim curves, and then enforces global geometric constraints so that faces meet with the right continuity and dimensions. Done well, the result is a kernel-acceptable solid that preserves functional interfaces and symmetry. Done poorly, you get a patchwork of approximate faces that break during booleans or deviate from the scan beyond acceptable Hausdorff limits. The remainder of this article unpacks that pipeline, the algorithms that make it robust, and the workflow patterns that keep humans in control without slowing them down.
The first deliverable is editable geometry suitable for parametric CAD: a model that can be dimensioned, constrained, and modified while maintaining intent. This includes recognizable primitives (planes, cylinders) and blends that are captured as fillets, not merely as wavy surface approximations. By recovering symmetry, parallelism, perpendicularity, concentricity, and equal radii, you seed a feature tree that resists downstream drift. Realistic expectations help: you rarely reconstruct the original sketch history, but you can capture an equivalent basis set of datums and constraints that support edits. For prismatic parts, that might mean extracting main planes, hole patterns, and fillet radii; for freeform parts, it might involve quad-dominant patches with smooth transitions and protected interface zones for mating features.
Beyond editability, a successful conversion ships “downstream ready” geometry. That implies: CAM-friendly faces with correct tangency for toolpath continuity; stable curvature for simulation; and clean references for MBD and GD&T. If your goal is inspection, you may prefer associated PMI in STEP AP242, so the B-Rep carries datums and tolerances that consumers recognize. Change management benefits, too, because an intent-rich B-Rep diffs predictably under revisions, enabling structured ECO processes. Finally, metadata matters: units, provenance, and surface classification should be explicit so no ambiguity creeps into manufacturing.
Success is quantifiable. Use:
Track these metrics per region (e.g., bores, bosses, freeform panels) so you can selectively refine where it matters most and not overfit decorative zones.
Inputs span laser and structured-light scans for external geometry, CT for internal cavities, photogrammetry for large objects, and legacy STL archives from old projects. Each source has quirks: structured-light excels at smooth plastics but struggles with glossy metal; CT captures hidden geometry but introduces ring artifacts; photogrammetry can drift on repetitive textures. The conversion pipeline must normalize these quirks into a consistent, unit-aware triangle soup. Be explicit about target tolerances early—don’t overspec; the scan’s noise floor sets a practical ceiling on the fidelity you can achieve without overfitting spurious detail.
Every project rides on a handful of constraints:
Align constraints with part classes. A turbine blade’s leading edge demands tight curvature control, while a decorative housing can accept looser tolerances except at mounting bosses. Keeping these constraints explicit reduces churn later.
Garbage in, garbage out applies doubly here. Begin with outlier removal using statistical filters (e.g., radius-based neighbor counts) to eliminate floating points and scan spikes. Follow with edge-preserving smoothing. Bilateral or MLS filtering attenuates noise while respecting sharp features if you set kernel sizes based on local edge length. Shrinkage is a real risk; avoid mean curvature flow unless you control volume. For CT, denoise on slices before meshing to reduce stair-stepping. Always log the sequence and parameters so you can reproduce results as tolerances change midstream.
Correct normals are essential for curvature estimation and downstream surface fitting. Start with a minimum spanning tree over the mesh to propagate a consistent orientation, then flip components facing inward. Validate with ambient occlusion or ray tests for tricky cavities. Where scans are merged, remove seams and duplicate vertices; inconsistent normals across tiles often signal misregistration or scale drift.
Feature stability improves when triangle shapes and sizes are reasonable. Use isotropic remeshing to equilibrate edge lengths, followed by adaptive decimation that preserves curvature and sharp edges. Decimate aggressively in flat regions to reduce solver workload, but keep dense sampling near small radii and tight blends. The goal is a mesh that is neither too coarse to miss features nor so dense that numerical conditioning collapses. Bake in tags for suspected feature edges so later steps know where to maintain fidelity.
Sharp edges often delineate where primitives meet. Compute principal curvatures or dihedral angles between adjacent faces to detect creases. Combine these with region-growing to partition the mesh into patches with similar curvature signatures. Multi-scale analysis helps: what is “sharp” at one scale may be smooth at another, especially with variable mesh density. Consistency checks across scales prevent oversegmentation and make segmentation robust to noise.
RANSAC and Hough transforms are workhorses for finding planes, cylinders, and spheres amid clutter. RANSAC provides outlier tolerance; Hough offers global accumulation that can pick up weak but consistent signals. Use algebraic fits for quick hypothesis screening, then refine with orthogonal distance regression. In practice, run multiple rounds: first find dominant primitives, peel them off, then iterate for smaller features like secondary bores or cones. Retain a confidence score per candidate to support human review.
Machine learning can accelerate segmentation beyond purely geometric cues. Train lightweight networks to classify patches into planes, cylinders, and freeform, or to flag regions likely to be fillets. Keep models interpretable: pair predictions with uncertainty estimates so operators know when to trust the suggestion. Importantly, “semantic” here is geometric semantics, not object semantics—e.g., “this patch behaves like a cylinder,” not “this is a handle.” A hybrid approach—ML to propose, algorithms to verify—delivers speed without sacrificing determinism.
Once segmented, fit primitives using algebraic initialization followed by orthogonal distance regression. For cylinders and cones, solve for axis and radius/angle with bounds from segmentation statistics. Planes benefit from SVD-based normal estimation; spheres and tori require careful weighting to avoid bias from uneven sampling. Favor robust losses (discussed later) to keep outliers from skewing fits. Report residuals as both RMS and max deviation so you can decide if the primitive stands or needs to be split.
Axes, mirror planes, and rotational symmetry are high-value constraints. Infer them by clustering axis directions of cylinders and cones, or by autocorrelation of point distributions. How you seed constraints matters: if multiple bores share an axis, you get concentricity “for free” in later solves. If a part exhibits bilateral symmetry, apply it as a soft constraint; let the solver balance scan noise against symmetry preservation. Recording these in a constraint library pays dividends when geometry evolves under global optimization.
Freeform regions deserve their own treatment. Begin with quad-dominant remeshing to produce a sensible parameterization. Build NURBS or T-spline patches that follow principal curvature directions, keeping patch counts low to avoid ripple. Where possible, anchor patch boundaries to robust features—datum planes, silhouette lines at typical view directions, or transition curves from primitives. Ensure control point layouts support later edits, not just minimal reconstruction error today.
Across boundaries, enforce appropriate continuity: position (G0) at hard edges, tangency (G1) at blends, and curvature (G2) on high-end consumer surfaces. Solve these as constraints during fitting, not as a post-process hack. For fillets, fit the spine and radius function first; then build rolling-ball surfaces that satisfy tangency to adjacent faces, rather than letting freeform patches “fake” a fillet shape. This yields predictable offsets and better machining behavior.
With surfaces in hand, intersect them to produce the curve network that becomes edges in the B-Rep. Use robust surface-surface intersection with tolerance-aware stepping. Chain edges into coherent paths; break and re-snap where numerical noise creates micro gaps. Pay attention to loop closure: nearly-closed loops are common when symmetry or periodic surfaces are involved. Enforce periodicity where relevant (e.g., around a torus) to avoid slivers.
Trim loops are assembled from the intersection curves and segmented boundaries. Optimize loops to minimize curvature oscillation and to respect feature boundaries identified earlier. For blends, extract spines by tracing loci of constant radius or evaluating the medial axis in the blend region; these spines support variable-radius fillets when the scan strongly suggests a taper. Store loop provenance so downstream healing understands whether a loop came from an analytic intersection or a heuristically bridged gap.
Real models need clean topology. Merge coincident edges and vertices within a controlled tolerance; resolve T-junctions by splitting or extending faces so every edge belongs to exactly two faces in solids. If shells are intended, track their open boundaries explicitly. Enforce manifoldness by removing self-intersections and eliminating zero-area slivers; these often arise from near-parallel adjacent faces or over-ambitious decimation earlier.
Use Euler-operator-based checks: verify that V − E + F equals 2 for closed shells (accounting for genus), and that face orientations consistently point outward. When multiple shells exist (e.g., part and internal void), classify them via ray casting and create solids using kernel-native operations rather than homebrew booleans. Where booleans are necessary (e.g., to trim an exhausted freeform region), prefer kernel operations aligned with your target downstream kernel (Parasolid or ACIS) to minimize import surprises.
Before declaring victory, perform a global solve that enforces equal radii, tangency, symmetry, and parallelism across the model. Treat constraints with weights so you can relax them if they fight each other under scan noise. This reduces drift and aligns independently fitted patches into a coherent, intentful whole. Recompute trim curves after the solve; the geometry moved, so your curves must follow suit to remain consistent.
Outliers persist even after cleaning. Use robust loss functions—Huber, Tukey, or L1—to prevent them from dominating least squares. Fit in multiple scales: start coarse to capture global shape, then refine locally where error maps indicate high residuals. Freeze converged regions to stabilize later passes and to keep the solver’s degrees of freedom manageable.
Convergence isn’t just “error decreased.” Watch for loop closure on trim boundaries, stable constraint residuals, and monotonic improvement in curvature continuity at intended G1/G2 seams. If any of those regress while RMS error improves, you may be overfitting noise at the expense of usability. Maintain acceptance criteria that consider both geometry and intent simultaneously.
Generate colorized error maps (signed distance to surfaces) and confidence overlays from segmentation and ML steps. These guide human edits: operators can accept, override, or request local refits. Quantify uncertainty: provide percentile bands (e.g., 95% of points within 0.05 mm) rather than a single RMS figure. For critical features, export local deviation reports that inspection teams can use directly.
Several tools provide end-to-end or semi-automated Mesh-to-BRep workflows: Geomagic Design X, Siemens NX Reverse Engineering, Creo Reverse Engineering, Rhino with specialized plugins, Fusion 360, and PowerShape. These offer interactive fitting, feature recognition, and kernel-backed healing. Picking among them often hinges on your primary CAD ecosystem and licensing realities; staying within a single kernel frequently reduces import friction.
If you are building pipelines, libraries like OpenCascade and CGAL handle geometry operations; Parasolid and ACIS provide robust commercial kernels. For segmentation, lightweight ML stacks (PyTorch/TensorFlow) paired with geometric libraries (libigl) are common. Aim for a stack that keeps analytic surfaces analytic; avoid sampling analytic curves into polylines except for display.
Integration patterns typically fall into:
Choose interchange wisely: STEP AP242 with PMI for downstream traceability, Parasolid XT for kernel fidelity, and IGES only for legacy compatibility. Embed version and tolerance metadata so recipients know precisely what they import.
Automation accelerates, but humans resolve ambiguity and encode intent. Provide guided segmentation where the operator seeds a few strokes and the system grows regions along curvature cues. Offer sketch-assisted primitive placement—two clicks across a bore to seed a cylinder fit, or a rectangle to define a prismatic datum. These lightweight interactions often remove hours of algorithmic guesswork.
Empower users to tag constraints explicitly: “these holes share a radius,” “this face is a primary datum,” or “mirror across this plane.” Store constraints early, even before perfect fits, to steer later solves. A well-chosen datum triad, aligned to functional interfaces, stabilizes the entire model and simplifies GD&T mapping.
Confidence overlays and error heatmaps inform acceptance decisions. If the system proposes a cylinder with high confidence and low residual, a single accept click moves it into the constraint set. Auto-suggested blends, detected by constant-radius cues, can be accepted en masse and later refined where local deviations exceed thresholds. The core principle: high-leverage human decisions, minimal micromanagement.
QA is not an afterthought; it is the contract between geometry and manufacturing. Maintain dashboards for Hausdorff and point-to-surface RMS, with drill-down by region. Add draft-angle checks relative to pull directions and wall-thickness maps for molding or casting. These are not optional—they expose problems that otherwise appear months later on the shop floor.
Map reconstructed datums to inspection datums and provide tolerance maps that reflect functional zones: tighter near sealing faces and bearing seats, looser on cosmetic covers. Infer coaxiality, flatness, and perpendicularity directly from the recovered constraints. When exporting STEP AP242 with PMI, verify that recipient systems interpret and display tolerances correctly; it only helps if downstream sees what you intended.
For critical interfaces, perform quick prints or gauge checks. 3D-printed go/no-go gauges for holes and slots can validate topology and diameters before committing to machining. Fit checks on assemblies—virtual and physical—catch subtle misalignments that pure error maps miss, especially where compliance or assembly sequence matters.
Thin sections behave poorly under naive smoothing and decimation. Oversample thin zones and tune tolerances to be fractions of sheet thickness. For small radii fillets, ensure sampling density is high enough to capture curvature; otherwise, solvers will collapse fillets into sharp edges. If necessary, mark these as protected regions where decimation is not allowed.
Transitions between primitives and freeform regions confound uniform strategies. Use a hierarchical approach: fit primitives first, lock them with tangency constraints, then build blends as rolling-ball or variable-radius surfaces constrained to both sides. Avoid letting a freeform patch “cover” a misfit primitive; you lose editability and machining predictability.
When scans are under-resolved or noisy, resist the temptation to overfit. Consider targeted rescans at key features or fuse multi-view data to raise confidence. If rescanning is impossible, use confidence-weighted fitting, giving less weight to sparse regions, and widen tolerances where necessary. Make these compromises explicit in your QA reports to avoid false precision.
Decorative textures and embossed logos should rarely become part of the outer B-Rep unless they are functional. Isolate them by segmenting high-frequency detail and either suppressing it or modeling it as separate features. For lattices, decouple the implicit lattice from the boundary shell: reconstruct the outer B-Rep for interfaces and manufacturability, and reference the lattice as a procedural or implicit field in a separate asset.
Large scans and complex parts demand performance work. Use BVH or AABB trees for nearest-neighbor queries; offload dense fitting to GPU kernels where linear algebra dominates; and tile data for out-of-core processing to avoid memory blowups. Parallelize by regions—primitive candidates can be evaluated independently before a global solve ties them together. Cache expensive computations like curvature and local PCA bases.
Governance is as important as geometry. Version every step—preprocessing filters, segmentation thresholds, and solver weights—so results are reproducible. Store audit trails for compliance: who accepted which feature at what time with which residuals. Keep an intent inventory (datums, constraints, symmetry) alongside the geometry so revisions preserve meaning, not just shape. When exporting, embed this metadata in STEP notes or sidecar JSON to keep downstream systems informed.
Mesh-to-BRep conversion succeeds when you solve geometry, topology, and intent together. Robust preprocessing suppresses noise without shrinking critical features. Hybrid fitting recovers primitives where they exist and deploys disciplined freeform patches where they don’t. Constraint-driven global optimization aligns everything into a coherent whole, and rigorous QA verifies that the result is both faithful and usable.
Pair targeted automation with human-in-the-loop controls. Algorithms discover, propose, and refine; operators decide, constrain, and accept. This pairing delivers the highest ROI, especially on complex blends and legacy parts with ambiguous features, because it balances speed with engineering responsibility. Maintain a clear paper trail of choices and residuals so you can stand behind the model in manufacturing and inspection conversations.
Expect progress from ML-assisted segmentation that is uncertainty-aware, improved bridges from implicit fields to B-Reps, and tighter CAD-kernel integration with standardized benchmarks and error reporting. In the meantime, act on what you control:
Approached this way, Mesh-to-BRep becomes a reliable bridge from raw scans to confident design and production, not a fragile detour.
Sign up to get the latest on sales, new releases and more …