Position effects, machine equivalence and capability from build-plate CMM data.Runs in your browser. Files are not uploaded. Works offline after first load.
Drop measurement / positions / tolerance CSV or a .3mf here, or
All characteristics
Method and limits
Tests run on deviation from nominal (value if no nominal). Nominal defaults to the LSL/USL midpoint.
Zones are an equal grid over the plate rectangle you set, not over the parts' bounding box, so a zone is a fixed physical region.
With a build or machine column, positional tests are adjusted for build offsets (indicator terms; zone ANOVA becomes a nested-model F test). Without that, a machine offset shows up as noise, or as a fake position effect if machines used different layouts. Untick to test raw pooled data.
Regressions are one predictor at a time (plus build terms). Distance along gas flow is measured from the upstream plate edge, so for ±X it carries the same information as x; it is listed so the report states the flow direction. A combined x+y+r model was rejected: r is nearly collinear with x and y on a filled plate and the coefficients become unreadable.
Δ = slope × observed range of the predictor. % tol = Δ / (USL − LSL); for a one-sided tolerance the width is |limit − nominal|. The equivalence margin uses the same width.
p-values are not adjusted for multiple tests. With 6 positional tests per characteristic, 0.05/6 ≈ 0.008 is a rough Bonferroni bar.
Machine comparison: Welch t-test, and TOST (Schuirmann 1987) with Welch df at α = 0.05. Equivalent when the 90% CI of the difference lies inside ±margin. A large Welch p is not evidence of equivalence; that is what TOST is for.
Ppk uses overall sd. Cpk uses pooled within-build sd; with one build Cpk = Ppk. No c4 bias correction. 95% CI on Cpk: Bissell (1990), Cpk ± 1.96√(1/(9n) + Cpk²/(2(n−1))). Assumes normal data; no normality test is run.
t and F tail areas come from the regularized incomplete beta function (continued fraction, Numerical Recipes §6.4). Regression is checked against NIST StRD Norris in test.js.
.3mf: position = build item transform applied to the mesh bounding-box center; for objects built from components only the item translation is used. Matched to part id by item partnumber, object name or object id.
Not modeled: spatial autocorrelation between neighbouring parts, outliers, non-normal data, recoater-direction effects other than through y.