How the estimate is calculated
This page is the honest version of the pitch: what cncquoter actually measures, what it assumes, and where a ballpark number can go wrong. Read it before you send a quote based on this tool.
1. Reading the file
Your STEP file is parsed and triangulated entirely on your own device, using an in-browser build of the open-source OpenCascade geometry kernel (occt-import-js). The file is read into memory by your browser and never leaves it — there is no upload step, no server-side processing, and no copy of your file anywhere but your machine. Files over 50 MB are rejected with a message rather than attempted, since very large assemblies can exhaust browser memory.
2. What's measured
- Bounding box — the smallest axis-aligned box containing every vertex of the triangulated mesh, in millimeters. STEP files are expected to declare their own units; occt-import-js reads that declaration and converts to millimeters automatically. Files that omit a unit block are assumed to already be in millimeters unless you check "authored in inches."
- Part volume — computed by summing signed tetrahedron volumes over every triangle of every solid body in the file (the standard divergence-theorem trick for mesh volume), then taking the absolute value per body and summing across bodies. This is exact for the triangulated approximation of the part, not for the true smooth CAD surface — a coarse tessellation on a heavily filleted part will be slightly off.
- Surface area — the sum of every triangle's area, again over the tessellated mesh.
- Stock envelope — your bounding box plus a configurable machining allowance on every side. Material-to-remove is stock volume minus part volume.
- Estimated setups — a heuristic, not a process plan. Every triangle (grouped by the file's own B-rep face where available) is checked against the six axis directions (±X, ±Y, ±Z); if a meaningful share of the part's surface area is flat and normal to one of those directions, that direction counts as a setup. It assumes 3-axis milling and has no idea about actual workholding, fixturing, or which faces are reachable on your specific machine.
- Hole count — not currently available. occt-import-js's triangulated output includes B-rep face boundaries (which triangles belong to which original CAD face) but not face *type* — there's no signal in the mesh alone that distinguishes a cylindrical hole from any other curved face without deeper geometry access than the triangulation exposes. Rather than guess, this field is left blank.
3. Turning geometry into a price
The cost model (open in the browser's dev tools if you want to see it — nothing is hidden) combines the measured geometry with your shop settings:
- Material is priced on the stock block (not the finished part) using the preset's density and $/kg.
- Roughing time is the removal volume divided by the material's rough material-removal rate.
- Finishing time scales with surface area.
- Setup time is your per-setup minutes × estimated setups, amortized across the batch quantity.
- Programming time is your baseline minutes, scaled by a size-invariant complexity multiplier (surface area relative to volume²⁄³ — a plain block scores near 1×; a part with lots of thin walls or pockets scores higher), amortized across the batch.
- Margin is a straight markup on the fully-loaded cost.
The low–high range is not a statistical confidence interval — it's a flat ±percentage (yours to set) applied on top, meant to represent "how rough is a triangle-mesh takeoff, honestly."
4. What this heuristic can't see
No toolpath simulation. Nothing here plans an actual roughing or finishing strategy, checks tool access, or accounts for rest-machining passes.
Thin walls and deep pockets cost more than this model knows. A 0.5 mm wall needs slower feeds, more passes, and often a different fixturing strategy than the bulk-removal-rate math above assumes.
Tight tolerances aren't visible in a mesh. A STEP file's triangulation carries no GD&T, no tolerance callouts, and no surface finish spec — all of which can dominate cost on the actual part.
This is a starting number, not a bid. Always review the part (and the drawing, if there is one) before sending a number to a customer.
5. Why it never asks you to upload anything
Customer CAD is frequently under NDA. Running the entire pipeline — parsing, triangulation, geometry math, and pricing — in your own browser means there is nothing to leak: no server ever receives the file, and there's no upload log, no cloud storage bucket, and no third party in the loop.