formulab 0.1.11 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +107 -10
- package/README.md +109 -17
- package/dist/automotive/brakingDistance.d.ts +16 -0
- package/dist/automotive/brakingDistance.d.ts.map +1 -0
- package/dist/automotive/brakingDistance.js +47 -0
- package/dist/automotive/brakingDistance.js.map +1 -0
- package/dist/automotive/index.d.ts +2 -1
- package/dist/automotive/index.d.ts.map +1 -1
- package/dist/automotive/index.js +1 -0
- package/dist/automotive/index.js.map +1 -1
- package/dist/automotive/types.d.ts +16 -0
- package/dist/automotive/types.d.ts.map +1 -1
- package/dist/battery/batteryPackConfig.d.ts +10 -0
- package/dist/battery/batteryPackConfig.d.ts.map +1 -0
- package/dist/battery/batteryPackConfig.js +28 -0
- package/dist/battery/batteryPackConfig.js.map +1 -0
- package/dist/battery/bmsBalancing.d.ts +11 -0
- package/dist/battery/bmsBalancing.d.ts.map +1 -0
- package/dist/battery/bmsBalancing.js +47 -0
- package/dist/battery/bmsBalancing.js.map +1 -0
- package/dist/battery/cRate.d.ts +10 -0
- package/dist/battery/cRate.d.ts.map +1 -0
- package/dist/battery/cRate.js +29 -0
- package/dist/battery/cRate.js.map +1 -0
- package/dist/battery/chargingProfile.d.ts +11 -0
- package/dist/battery/chargingProfile.d.ts.map +1 -0
- package/dist/battery/chargingProfile.js +38 -0
- package/dist/battery/chargingProfile.js.map +1 -0
- package/dist/battery/cycleLife.d.ts +11 -0
- package/dist/battery/cycleLife.d.ts.map +1 -0
- package/dist/battery/cycleLife.js +70 -0
- package/dist/battery/cycleLife.js.map +1 -0
- package/dist/battery/energyDensity.d.ts +10 -0
- package/dist/battery/energyDensity.d.ts.map +1 -0
- package/dist/battery/energyDensity.js +20 -0
- package/dist/battery/energyDensity.js.map +1 -0
- package/dist/battery/index.d.ts +12 -0
- package/dist/battery/index.d.ts.map +1 -0
- package/dist/battery/index.js +12 -0
- package/dist/battery/index.js.map +1 -0
- package/dist/battery/internalResistance.d.ts +11 -0
- package/dist/battery/internalResistance.d.ts.map +1 -0
- package/dist/battery/internalResistance.js +18 -0
- package/dist/battery/internalResistance.js.map +1 -0
- package/dist/battery/selfDischarge.d.ts +10 -0
- package/dist/battery/selfDischarge.d.ts.map +1 -0
- package/dist/battery/selfDischarge.js +17 -0
- package/dist/battery/selfDischarge.js.map +1 -0
- package/dist/battery/stateOfHealth.d.ts +11 -0
- package/dist/battery/stateOfHealth.d.ts.map +1 -0
- package/dist/battery/stateOfHealth.js +33 -0
- package/dist/battery/stateOfHealth.js.map +1 -0
- package/dist/battery/thermalRunaway.d.ts +11 -0
- package/dist/battery/thermalRunaway.d.ts.map +1 -0
- package/dist/battery/thermalRunaway.js +28 -0
- package/dist/battery/thermalRunaway.js.map +1 -0
- package/dist/battery/types.d.ts +175 -0
- package/dist/battery/types.d.ts.map +1 -0
- package/dist/battery/types.js +5 -0
- package/dist/battery/types.js.map +1 -0
- package/dist/chemical/dilution.d.ts.map +1 -1
- package/dist/chemical/dilution.js +21 -24
- package/dist/chemical/dilution.js.map +1 -1
- package/dist/chemical/heatTransfer.d.ts +16 -0
- package/dist/chemical/heatTransfer.d.ts.map +1 -0
- package/dist/chemical/heatTransfer.js +85 -0
- package/dist/chemical/heatTransfer.js.map +1 -0
- package/dist/chemical/index.d.ts +3 -1
- package/dist/chemical/index.d.ts.map +1 -1
- package/dist/chemical/index.js +2 -0
- package/dist/chemical/index.js.map +1 -1
- package/dist/chemical/pipeFlow.d.ts +17 -0
- package/dist/chemical/pipeFlow.d.ts.map +1 -0
- package/dist/chemical/pipeFlow.js +112 -0
- package/dist/chemical/pipeFlow.js.map +1 -0
- package/dist/chemical/reactor.js +2 -2
- package/dist/chemical/reactor.js.map +1 -1
- package/dist/chemical/types.d.ts +82 -10
- package/dist/chemical/types.d.ts.map +1 -1
- package/dist/construction/index.d.ts +2 -1
- package/dist/construction/index.d.ts.map +1 -1
- package/dist/construction/index.js +1 -0
- package/dist/construction/index.js.map +1 -1
- package/dist/construction/momentOfInertia.d.ts +17 -0
- package/dist/construction/momentOfInertia.d.ts.map +1 -0
- package/dist/construction/momentOfInertia.js +204 -0
- package/dist/construction/momentOfInertia.js.map +1 -0
- package/dist/construction/pert.d.ts.map +1 -1
- package/dist/construction/pert.js +1 -17
- package/dist/construction/pert.js.map +1 -1
- package/dist/construction/types.d.ts +50 -0
- package/dist/construction/types.d.ts.map +1 -1
- package/dist/electronics/index.d.ts +2 -1
- package/dist/electronics/index.d.ts.map +1 -1
- package/dist/electronics/index.js +1 -0
- package/dist/electronics/index.js.map +1 -1
- package/dist/electronics/ohmsLaw.d.ts +12 -0
- package/dist/electronics/ohmsLaw.d.ts.map +1 -0
- package/dist/electronics/ohmsLaw.js +69 -0
- package/dist/electronics/ohmsLaw.js.map +1 -0
- package/dist/electronics/types.d.ts +24 -0
- package/dist/electronics/types.d.ts.map +1 -1
- package/dist/energy/carbonFootprint.d.ts.map +1 -1
- package/dist/energy/carbonFootprint.js +2 -1
- package/dist/energy/carbonFootprint.js.map +1 -1
- package/dist/energy/index.d.ts +2 -1
- package/dist/energy/index.d.ts.map +1 -1
- package/dist/energy/index.js +1 -0
- package/dist/energy/index.js.map +1 -1
- package/dist/energy/powerCost.d.ts.map +1 -1
- package/dist/energy/powerCost.js +2 -1
- package/dist/energy/powerCost.js.map +1 -1
- package/dist/energy/solarOutput.d.ts +14 -0
- package/dist/energy/solarOutput.d.ts.map +1 -0
- package/dist/energy/solarOutput.js +54 -0
- package/dist/energy/solarOutput.js.map +1 -0
- package/dist/energy/types.d.ts +20 -0
- package/dist/energy/types.d.ts.map +1 -1
- package/dist/environmental/emissionsIntensity.d.ts +11 -0
- package/dist/environmental/emissionsIntensity.d.ts.map +1 -0
- package/dist/environmental/emissionsIntensity.js +26 -0
- package/dist/environmental/emissionsIntensity.js.map +1 -0
- package/dist/environmental/energyIntensity.d.ts +11 -0
- package/dist/environmental/energyIntensity.d.ts.map +1 -0
- package/dist/environmental/energyIntensity.js +19 -0
- package/dist/environmental/energyIntensity.js.map +1 -0
- package/dist/environmental/esgSummary.d.ts +11 -0
- package/dist/environmental/esgSummary.d.ts.map +1 -0
- package/dist/environmental/esgSummary.js +39 -0
- package/dist/environmental/esgSummary.js.map +1 -0
- package/dist/environmental/gwpCalculator.d.ts +11 -0
- package/dist/environmental/gwpCalculator.d.ts.map +1 -0
- package/dist/environmental/gwpCalculator.js +31 -0
- package/dist/environmental/gwpCalculator.js.map +1 -0
- package/dist/environmental/index.d.ts +12 -0
- package/dist/environmental/index.d.ts.map +1 -0
- package/dist/environmental/index.js +12 -0
- package/dist/environmental/index.js.map +1 -0
- package/dist/environmental/productCarbonFootprint.d.ts +11 -0
- package/dist/environmental/productCarbonFootprint.d.ts.map +1 -0
- package/dist/environmental/productCarbonFootprint.js +29 -0
- package/dist/environmental/productCarbonFootprint.js.map +1 -0
- package/dist/environmental/scope1Emissions.d.ts +11 -0
- package/dist/environmental/scope1Emissions.d.ts.map +1 -0
- package/dist/environmental/scope1Emissions.js +35 -0
- package/dist/environmental/scope1Emissions.js.map +1 -0
- package/dist/environmental/scope2Emissions.d.ts +11 -0
- package/dist/environmental/scope2Emissions.d.ts.map +1 -0
- package/dist/environmental/scope2Emissions.js +49 -0
- package/dist/environmental/scope2Emissions.js.map +1 -0
- package/dist/environmental/scope3Emissions.d.ts +11 -0
- package/dist/environmental/scope3Emissions.d.ts.map +1 -0
- package/dist/environmental/scope3Emissions.js +36 -0
- package/dist/environmental/scope3Emissions.js.map +1 -0
- package/dist/environmental/types.d.ts +165 -0
- package/dist/environmental/types.d.ts.map +1 -0
- package/dist/environmental/types.js +5 -0
- package/dist/environmental/types.js.map +1 -0
- package/dist/environmental/vocEmissions.d.ts +11 -0
- package/dist/environmental/vocEmissions.d.ts.map +1 -0
- package/dist/environmental/vocEmissions.js +23 -0
- package/dist/environmental/vocEmissions.js.map +1 -0
- package/dist/environmental/waterFootprint.d.ts +11 -0
- package/dist/environmental/waterFootprint.d.ts.map +1 -0
- package/dist/environmental/waterFootprint.js +21 -0
- package/dist/environmental/waterFootprint.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/logistics/cbm.d.ts +7 -2
- package/dist/logistics/cbm.d.ts.map +1 -1
- package/dist/logistics/cbm.js +7 -2
- package/dist/logistics/cbm.js.map +1 -1
- package/dist/logistics/fillRate.d.ts.map +1 -1
- package/dist/logistics/fillRate.js +1 -17
- package/dist/logistics/fillRate.js.map +1 -1
- package/dist/logistics/safetyStock.d.ts.map +1 -1
- package/dist/logistics/safetyStock.js +2 -55
- package/dist/logistics/safetyStock.js.map +1 -1
- package/dist/machining/boltCircle.d.ts +16 -0
- package/dist/machining/boltCircle.d.ts.map +1 -0
- package/dist/machining/boltCircle.js +36 -0
- package/dist/machining/boltCircle.js.map +1 -0
- package/dist/machining/boringBarDeflection.d.ts +17 -0
- package/dist/machining/boringBarDeflection.d.ts.map +1 -0
- package/dist/machining/boringBarDeflection.js +54 -0
- package/dist/machining/boringBarDeflection.js.map +1 -0
- package/dist/machining/cuspHeight.d.ts +15 -0
- package/dist/machining/cuspHeight.d.ts.map +1 -0
- package/dist/machining/cuspHeight.js +23 -0
- package/dist/machining/cuspHeight.js.map +1 -0
- package/dist/machining/cycleTimeEstimator.d.ts +18 -0
- package/dist/machining/cycleTimeEstimator.d.ts.map +1 -0
- package/dist/machining/cycleTimeEstimator.js +62 -0
- package/dist/machining/cycleTimeEstimator.js.map +1 -0
- package/dist/machining/effectiveDiameter.d.ts +17 -0
- package/dist/machining/effectiveDiameter.d.ts.map +1 -0
- package/dist/machining/effectiveDiameter.js +24 -0
- package/dist/machining/effectiveDiameter.js.map +1 -0
- package/dist/machining/gaugeBlockStack.d.ts +16 -0
- package/dist/machining/gaugeBlockStack.d.ts.map +1 -0
- package/dist/machining/gaugeBlockStack.js +138 -0
- package/dist/machining/gaugeBlockStack.js.map +1 -0
- package/dist/machining/index.d.ts +14 -0
- package/dist/machining/index.d.ts.map +1 -0
- package/dist/machining/index.js +14 -0
- package/dist/machining/index.js.map +1 -0
- package/dist/machining/radialChipThinning.d.ts +18 -0
- package/dist/machining/radialChipThinning.d.ts.map +1 -0
- package/dist/machining/radialChipThinning.js +30 -0
- package/dist/machining/radialChipThinning.js.map +1 -0
- package/dist/machining/sineBarHeight.d.ts +16 -0
- package/dist/machining/sineBarHeight.d.ts.map +1 -0
- package/dist/machining/sineBarHeight.js +32 -0
- package/dist/machining/sineBarHeight.js.map +1 -0
- package/dist/machining/threadOverWires.d.ts +21 -0
- package/dist/machining/threadOverWires.d.ts.map +1 -0
- package/dist/machining/threadOverWires.js +54 -0
- package/dist/machining/threadOverWires.js.map +1 -0
- package/dist/machining/toolDeflection.d.ts +16 -0
- package/dist/machining/toolDeflection.d.ts.map +1 -0
- package/dist/machining/toolDeflection.js +36 -0
- package/dist/machining/toolDeflection.js.map +1 -0
- package/dist/machining/triangleSolver.d.ts +21 -0
- package/dist/machining/triangleSolver.d.ts.map +1 -0
- package/dist/machining/triangleSolver.js +120 -0
- package/dist/machining/triangleSolver.js.map +1 -0
- package/dist/machining/truePosition.d.ts +19 -0
- package/dist/machining/truePosition.d.ts.map +1 -0
- package/dist/machining/truePosition.js +44 -0
- package/dist/machining/truePosition.js.map +1 -0
- package/dist/machining/types.d.ts +201 -0
- package/dist/machining/types.d.ts.map +1 -0
- package/dist/machining/types.js +2 -0
- package/dist/machining/types.js.map +1 -0
- package/dist/math.d.ts +26 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +95 -0
- package/dist/math.js.map +1 -0
- package/dist/metal/bendAllowance.d.ts.map +1 -1
- package/dist/metal/bendAllowance.js +2 -1
- package/dist/metal/bendAllowance.js.map +1 -1
- package/dist/metal/bolt.d.ts.map +1 -1
- package/dist/metal/bolt.js +3 -3
- package/dist/metal/bolt.js.map +1 -1
- package/dist/metal/flangeSpec.d.ts +10 -0
- package/dist/metal/flangeSpec.d.ts.map +1 -0
- package/dist/metal/flangeSpec.js +81 -0
- package/dist/metal/flangeSpec.js.map +1 -0
- package/dist/metal/index.d.ts +4 -1
- package/dist/metal/index.d.ts.map +1 -1
- package/dist/metal/index.js +3 -0
- package/dist/metal/index.js.map +1 -1
- package/dist/metal/materialGradeConverter.d.ts +10 -0
- package/dist/metal/materialGradeConverter.d.ts.map +1 -0
- package/dist/metal/materialGradeConverter.js +78 -0
- package/dist/metal/materialGradeConverter.js.map +1 -0
- package/dist/metal/metalWeight.d.ts +13 -3
- package/dist/metal/metalWeight.d.ts.map +1 -1
- package/dist/metal/metalWeight.js +24 -35
- package/dist/metal/metalWeight.js.map +1 -1
- package/dist/metal/pipeSpec.d.ts +10 -0
- package/dist/metal/pipeSpec.d.ts.map +1 -0
- package/dist/metal/pipeSpec.js +96 -0
- package/dist/metal/pipeSpec.js.map +1 -0
- package/dist/metal/roughness.js +1 -1
- package/dist/metal/roughness.js.map +1 -1
- package/dist/metal/types.d.ts +86 -13
- package/dist/metal/types.d.ts.map +1 -1
- package/dist/metal/weldHeat.js +1 -1
- package/dist/metal/weldHeat.js.map +1 -1
- package/dist/metal/welding.d.ts.map +1 -1
- package/dist/metal/welding.js +3 -2
- package/dist/metal/welding.js.map +1 -1
- package/dist/quality/controlChart.d.ts +26 -0
- package/dist/quality/controlChart.d.ts.map +1 -0
- package/dist/quality/controlChart.js +216 -0
- package/dist/quality/controlChart.js.map +1 -0
- package/dist/quality/cpk.d.ts +16 -4
- package/dist/quality/cpk.d.ts.map +1 -1
- package/dist/quality/cpk.js +16 -4
- package/dist/quality/cpk.js.map +1 -1
- package/dist/quality/dpmo.d.ts.map +1 -1
- package/dist/quality/dpmo.js +1 -61
- package/dist/quality/dpmo.js.map +1 -1
- package/dist/quality/index.d.ts +2 -1
- package/dist/quality/index.d.ts.map +1 -1
- package/dist/quality/index.js +1 -0
- package/dist/quality/index.js.map +1 -1
- package/dist/quality/oee.d.ts +12 -1
- package/dist/quality/oee.d.ts.map +1 -1
- package/dist/quality/oee.js +21 -9
- package/dist/quality/oee.js.map +1 -1
- package/dist/quality/ppk.d.ts.map +1 -1
- package/dist/quality/ppk.js +1 -16
- package/dist/quality/ppk.js.map +1 -1
- package/dist/quality/ppm.d.ts.map +1 -1
- package/dist/quality/ppm.js +1 -80
- package/dist/quality/ppm.js.map +1 -1
- package/dist/quality/types.d.ts +31 -0
- package/dist/quality/types.d.ts.map +1 -1
- package/dist/safety/fallClearance.d.ts.map +1 -1
- package/dist/safety/fallClearance.js +5 -4
- package/dist/safety/fallClearance.js.map +1 -1
- package/dist/safety/index.d.ts +2 -1
- package/dist/safety/index.d.ts.map +1 -1
- package/dist/safety/index.js +1 -0
- package/dist/safety/index.js.map +1 -1
- package/dist/safety/nioshLifting.d.ts +19 -10
- package/dist/safety/nioshLifting.d.ts.map +1 -1
- package/dist/safety/nioshLifting.js +19 -10
- package/dist/safety/nioshLifting.js.map +1 -1
- package/dist/safety/types.d.ts +19 -0
- package/dist/safety/types.d.ts.map +1 -1
- package/dist/safety/ventilationRate.d.ts +12 -0
- package/dist/safety/ventilationRate.d.ts.map +1 -0
- package/dist/safety/ventilationRate.js +71 -0
- package/dist/safety/ventilationRate.js.map +1 -0
- package/dist/utility/index.d.ts +1 -1
- package/dist/utility/index.d.ts.map +1 -1
- package/dist/utility/types.d.ts +0 -16
- package/dist/utility/types.d.ts.map +1 -1
- package/dist/utils.d.ts +3 -2
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +6 -4
- package/dist/utils.js.map +1 -1
- package/package.json +34 -3
- package/dist/utility/qrcode.d.ts +0 -30
- package/dist/utility/qrcode.d.ts.map +0 -1
- package/dist/utility/qrcode.js +0 -30
- package/dist/utility/qrcode.js.map +0 -1
|
@@ -1,58 +1,5 @@
|
|
|
1
1
|
import { roundTo } from '../utils.js';
|
|
2
|
-
|
|
3
|
-
* Approximate inverse of the standard normal CDF (quantile function)
|
|
4
|
-
* Using Abramowitz & Stegun 26.2.23 rational approximation
|
|
5
|
-
*
|
|
6
|
-
* @param p - Probability (0 < p < 1)
|
|
7
|
-
* @returns z-score (standard normal quantile)
|
|
8
|
-
*/
|
|
9
|
-
function normSInv(p) {
|
|
10
|
-
// Coefficients for the rational approximation
|
|
11
|
-
const a1 = -3.969683028665376e+01;
|
|
12
|
-
const a2 = 2.209460984245205e+02;
|
|
13
|
-
const a3 = -2.759285104469687e+02;
|
|
14
|
-
const a4 = 1.383577518672690e+02;
|
|
15
|
-
const a5 = -3.066479806614716e+01;
|
|
16
|
-
const a6 = 2.506628277459239e+00;
|
|
17
|
-
const b1 = -5.447609879822406e+01;
|
|
18
|
-
const b2 = 1.615858368580409e+02;
|
|
19
|
-
const b3 = -1.556989798598866e+02;
|
|
20
|
-
const b4 = 6.680131188771972e+01;
|
|
21
|
-
const b5 = -1.328068155288572e+01;
|
|
22
|
-
const c1 = -7.784894002430293e-03;
|
|
23
|
-
const c2 = -3.223964580411365e-01;
|
|
24
|
-
const c3 = -2.400758277161838e+00;
|
|
25
|
-
const c4 = -2.549732539343734e+00;
|
|
26
|
-
const c5 = 4.374664141464968e+00;
|
|
27
|
-
const c6 = 2.938163982698783e+00;
|
|
28
|
-
const d1 = 7.784695709041462e-03;
|
|
29
|
-
const d2 = 3.224671290700398e-01;
|
|
30
|
-
const d3 = 2.445134137142996e+00;
|
|
31
|
-
const d4 = 3.754408661907416e+00;
|
|
32
|
-
// Define break-points
|
|
33
|
-
const pLow = 0.02425;
|
|
34
|
-
const pHigh = 1 - pLow;
|
|
35
|
-
let q, r;
|
|
36
|
-
if (p < pLow) {
|
|
37
|
-
// Rational approximation for lower region
|
|
38
|
-
q = Math.sqrt(-2 * Math.log(p));
|
|
39
|
-
return (((((c1 * q + c2) * q + c3) * q + c4) * q + c5) * q + c6) /
|
|
40
|
-
((((d1 * q + d2) * q + d3) * q + d4) * q + 1);
|
|
41
|
-
}
|
|
42
|
-
else if (p <= pHigh) {
|
|
43
|
-
// Rational approximation for central region
|
|
44
|
-
q = p - 0.5;
|
|
45
|
-
r = q * q;
|
|
46
|
-
return (((((a1 * r + a2) * r + a3) * r + a4) * r + a5) * r + a6) * q /
|
|
47
|
-
(((((b1 * r + b2) * r + b3) * r + b4) * r + b5) * r + 1);
|
|
48
|
-
}
|
|
49
|
-
else {
|
|
50
|
-
// Rational approximation for upper region
|
|
51
|
-
q = Math.sqrt(-2 * Math.log(1 - p));
|
|
52
|
-
return -(((((c1 * q + c2) * q + c3) * q + c4) * q + c5) * q + c6) /
|
|
53
|
-
((((d1 * q + d2) * q + d3) * q + d4) * q + 1);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
2
|
+
import { normalInvCDF } from '../math.js';
|
|
56
3
|
/**
|
|
57
4
|
* Calculate Safety Stock and Reorder Point
|
|
58
5
|
*
|
|
@@ -77,7 +24,7 @@ function normSInv(p) {
|
|
|
77
24
|
export function safetyStock(input) {
|
|
78
25
|
const { avgDemand, demandStdDev, avgLeadTime, leadTimeStdDev, serviceLevel } = input;
|
|
79
26
|
// Calculate z-score for the desired service level
|
|
80
|
-
const zScore =
|
|
27
|
+
const zScore = normalInvCDF(serviceLevel);
|
|
81
28
|
// Average demand during lead time
|
|
82
29
|
const demandDuringLeadTime = avgDemand * avgLeadTime;
|
|
83
30
|
// Standard deviation of demand during lead time (DDLT)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safetyStock.js","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"safetyStock.js","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG1C;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IAErF,kDAAkD;IAClD,MAAM,MAAM,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAE1C,kCAAkC;IAClC,MAAM,oBAAoB,GAAG,SAAS,GAAG,WAAW,CAAC;IAErD,uDAAuD;IACvD,sCAAsC;IACtC,MAAM,cAAc,GAAG,WAAW,GAAG,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC;IACzD,MAAM,gBAAgB,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;IAE7C,8CAA8C;IAC9C,MAAM,YAAY,GAAG,oBAAoB,GAAG,gBAAgB,CAAC;IAE7D,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,WAAW,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzC,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;QACtC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;KACvD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { BoltCircleInput, BoltCircleResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate bolt hole circle pattern coordinates.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* θᵢ = startAngle + i × (360 / n)
|
|
7
|
+
* xᵢ = r × cos(θᵢ)
|
|
8
|
+
* yᵢ = r × sin(θᵢ)
|
|
9
|
+
*
|
|
10
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed.
|
|
11
|
+
*
|
|
12
|
+
* @param input - Bolt circle parameters
|
|
13
|
+
* @returns BoltCircleResult with hole coordinates and angular spacing
|
|
14
|
+
*/
|
|
15
|
+
export declare function boltCircle(input: BoltCircleInput): BoltCircleResult;
|
|
16
|
+
//# sourceMappingURL=boltCircle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boltCircle.d.ts","sourceRoot":"","sources":["../../src/machining/boltCircle.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAY,MAAM,YAAY,CAAC;AAE9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAuBnE"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate bolt hole circle pattern coordinates.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* θᵢ = startAngle + i × (360 / n)
|
|
7
|
+
* xᵢ = r × cos(θᵢ)
|
|
8
|
+
* yᵢ = r × sin(θᵢ)
|
|
9
|
+
*
|
|
10
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed.
|
|
11
|
+
*
|
|
12
|
+
* @param input - Bolt circle parameters
|
|
13
|
+
* @returns BoltCircleResult with hole coordinates and angular spacing
|
|
14
|
+
*/
|
|
15
|
+
export function boltCircle(input) {
|
|
16
|
+
const { boltCircleDiameter, numberOfHoles, startAngle = 0 } = input;
|
|
17
|
+
const radius = boltCircleDiameter / 2;
|
|
18
|
+
const angularSpacing = 360 / numberOfHoles;
|
|
19
|
+
const holes = [];
|
|
20
|
+
for (let i = 0; i < numberOfHoles; i++) {
|
|
21
|
+
const angleDeg = startAngle + i * angularSpacing;
|
|
22
|
+
const angleRad = (angleDeg * Math.PI) / 180;
|
|
23
|
+
holes.push({
|
|
24
|
+
holeNumber: i + 1,
|
|
25
|
+
angle: roundTo(angleDeg % 360, 4),
|
|
26
|
+
x: roundTo(radius * Math.cos(angleRad), 4),
|
|
27
|
+
y: roundTo(radius * Math.sin(angleRad), 4),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
radius: roundTo(radius, 4),
|
|
32
|
+
holes,
|
|
33
|
+
angularSpacing: roundTo(angularSpacing, 4),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=boltCircle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boltCircle.js","sourceRoot":"","sources":["../../src/machining/boltCircle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IAEpE,MAAM,MAAM,GAAG,kBAAkB,GAAG,CAAC,CAAC;IACtC,MAAM,cAAc,GAAG,GAAG,GAAG,aAAa,CAAC;IAE3C,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,GAAG,cAAc,CAAC;QACjD,MAAM,QAAQ,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,CAAC,GAAG,CAAC;YACjB,KAAK,EAAE,OAAO,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC;YACjC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC1C,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,KAAK;QACL,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { BoringBarDeflectionInput, BoringBarDeflectionResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate boring bar deflection using cantilever beam theory.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* I = π × d⁴ / 64
|
|
7
|
+
* δ = F × L³ / (3 × E × I)
|
|
8
|
+
* L/D ratio determines stability recommendation
|
|
9
|
+
*
|
|
10
|
+
* @reference Sandvik Coromant — Boring bar selection guide.
|
|
11
|
+
* L/D < 4: steel, L/D 4-6: carbide, L/D 6-10: heavy metal/damped
|
|
12
|
+
*
|
|
13
|
+
* @param input - Boring bar deflection parameters
|
|
14
|
+
* @returns BoringBarDeflectionResult with deflection, L/D ratio, and recommendation
|
|
15
|
+
*/
|
|
16
|
+
export declare function boringBarDeflection(input: BoringBarDeflectionInput): BoringBarDeflectionResult;
|
|
17
|
+
//# sourceMappingURL=boringBarDeflection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boringBarDeflection.d.ts","sourceRoot":"","sources":["../../src/machining/boringBarDeflection.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAqB,MAAM,YAAY,CAAC;AAWzG;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,wBAAwB,GAAG,yBAAyB,CA8B9F"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Young's modulus for boring bar materials (GPa)
|
|
4
|
+
*/
|
|
5
|
+
const BAR_MODULUS = {
|
|
6
|
+
carbide: 550,
|
|
7
|
+
steel: 200,
|
|
8
|
+
heavyMetal: 250,
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Calculate boring bar deflection using cantilever beam theory.
|
|
12
|
+
*
|
|
13
|
+
* @formula
|
|
14
|
+
* I = π × d⁴ / 64
|
|
15
|
+
* δ = F × L³ / (3 × E × I)
|
|
16
|
+
* L/D ratio determines stability recommendation
|
|
17
|
+
*
|
|
18
|
+
* @reference Sandvik Coromant — Boring bar selection guide.
|
|
19
|
+
* L/D < 4: steel, L/D 4-6: carbide, L/D 6-10: heavy metal/damped
|
|
20
|
+
*
|
|
21
|
+
* @param input - Boring bar deflection parameters
|
|
22
|
+
* @returns BoringBarDeflectionResult with deflection, L/D ratio, and recommendation
|
|
23
|
+
*/
|
|
24
|
+
export function boringBarDeflection(input) {
|
|
25
|
+
const { barDiameter, overhang, cuttingForce, material = 'steel' } = input;
|
|
26
|
+
const E = input.youngsModulus ?? BAR_MODULUS[material];
|
|
27
|
+
const E_MPa = E * 1000; // GPa → MPa
|
|
28
|
+
const I = (Math.PI * Math.pow(barDiameter, 4)) / 64;
|
|
29
|
+
const delta = (cuttingForce * Math.pow(overhang, 3)) / (3 * E_MPa * I);
|
|
30
|
+
const stiffness = delta > 0 ? cuttingForce / delta : Infinity;
|
|
31
|
+
const ldRatio = overhang / barDiameter;
|
|
32
|
+
let recommendation;
|
|
33
|
+
if (ldRatio <= 4) {
|
|
34
|
+
recommendation = 'Steel bar suitable';
|
|
35
|
+
}
|
|
36
|
+
else if (ldRatio <= 6) {
|
|
37
|
+
recommendation = 'Carbide bar recommended';
|
|
38
|
+
}
|
|
39
|
+
else if (ldRatio <= 10) {
|
|
40
|
+
recommendation = 'Heavy metal or damped bar recommended';
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
recommendation = 'L/D exceeds practical limits; reduce overhang';
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
deflection: roundTo(delta, 6),
|
|
47
|
+
momentOfInertia: roundTo(I, 4),
|
|
48
|
+
stiffness: roundTo(stiffness, 2),
|
|
49
|
+
ldRatio: roundTo(ldRatio, 2),
|
|
50
|
+
youngsModulus: E,
|
|
51
|
+
recommendation,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=boringBarDeflection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boringBarDeflection.js","sourceRoot":"","sources":["../../src/machining/boringBarDeflection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;GAEG;AACH,MAAM,WAAW,GAAsC;IACrD,OAAO,EAAE,GAAG;IACZ,KAAK,EAAE,GAAG;IACV,UAAU,EAAE,GAAG;CAChB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC;IAE1E,MAAM,CAAC,GAAG,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,YAAY;IAEpC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC9D,MAAM,OAAO,GAAG,QAAQ,GAAG,WAAW,CAAC;IAEvC,IAAI,cAAsB,CAAC;IAC3B,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,cAAc,GAAG,oBAAoB,CAAC;IACxC,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACxB,cAAc,GAAG,yBAAyB,CAAC;IAC7C,CAAC;SAAM,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QACzB,cAAc,GAAG,uCAAuC,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,cAAc,GAAG,+CAA+C,CAAC;IACnE,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC7B,eAAe,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5B,aAAa,EAAE,CAAC;QAChB,cAAc;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CuspHeightInput, CuspHeightResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the scallop (cusp) height for ball end mill surface finishing.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* h = r − √(r² − (stepover/2)²)
|
|
7
|
+
* Ra ≈ h / 4 (approximate)
|
|
8
|
+
*
|
|
9
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Ball-nose milling.
|
|
10
|
+
*
|
|
11
|
+
* @param input - Cusp height parameters
|
|
12
|
+
* @returns CuspHeightResult with scallop height and approximate Ra
|
|
13
|
+
*/
|
|
14
|
+
export declare function cuspHeight(input: CuspHeightInput): CuspHeightResult;
|
|
15
|
+
//# sourceMappingURL=cuspHeight.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cuspHeight.d.ts","sourceRoot":"","sources":["../../src/machining/cuspHeight.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,gBAAgB,CAUnE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the scallop (cusp) height for ball end mill surface finishing.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* h = r − √(r² − (stepover/2)²)
|
|
7
|
+
* Ra ≈ h / 4 (approximate)
|
|
8
|
+
*
|
|
9
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Ball-nose milling.
|
|
10
|
+
*
|
|
11
|
+
* @param input - Cusp height parameters
|
|
12
|
+
* @returns CuspHeightResult with scallop height and approximate Ra
|
|
13
|
+
*/
|
|
14
|
+
export function cuspHeight(input) {
|
|
15
|
+
const { toolRadius, stepover } = input;
|
|
16
|
+
const halfStep = stepover / 2;
|
|
17
|
+
const h = toolRadius - Math.sqrt(toolRadius * toolRadius - halfStep * halfStep);
|
|
18
|
+
return {
|
|
19
|
+
cuspHeight: roundTo(h, 4),
|
|
20
|
+
surfaceRoughness: roundTo((h * 1000) / 4, 2), // mm → μm, then /4 for Ra approx
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=cuspHeight.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cuspHeight.js","sourceRoot":"","sources":["../../src/machining/cuspHeight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,UAAU,CAAC,KAAsB;IAC/C,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAEvC,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,QAAQ,CAAC,CAAC;IAEhF,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;QACzB,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,iCAAiC;KAChF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CycleTimeEstimatorInput, CycleTimeEstimatorResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Estimate CNC cycle time from a list of operations.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* cutting time = Σ(distance / feedRate) for cutting operations
|
|
7
|
+
* rapid time = Σ(distance / rapidRate) for rapid operations
|
|
8
|
+
* tool change time = Σ(time) for toolChange operations
|
|
9
|
+
* dwell time = Σ(time) for dwell operations
|
|
10
|
+
* cycleTime = cuttingTime + rapidTime + toolChangeTime + dwellTime
|
|
11
|
+
* totalTime = setupTime + cycleTime × partCount
|
|
12
|
+
* utilization = cuttingTime / cycleTime × 100
|
|
13
|
+
*
|
|
14
|
+
* @param input - Cycle time parameters
|
|
15
|
+
* @returns CycleTimeEstimatorResult with time breakdown and utilization
|
|
16
|
+
*/
|
|
17
|
+
export declare function cycleTimeEstimator(input: CycleTimeEstimatorInput): CycleTimeEstimatorResult;
|
|
18
|
+
//# sourceMappingURL=cycleTimeEstimator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycleTimeEstimator.d.ts","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAIpF;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,wBAAwB,CA+C3F"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
const DEFAULT_RAPID_RATE = 10000; // mm/min
|
|
3
|
+
/**
|
|
4
|
+
* Estimate CNC cycle time from a list of operations.
|
|
5
|
+
*
|
|
6
|
+
* @formula
|
|
7
|
+
* cutting time = Σ(distance / feedRate) for cutting operations
|
|
8
|
+
* rapid time = Σ(distance / rapidRate) for rapid operations
|
|
9
|
+
* tool change time = Σ(time) for toolChange operations
|
|
10
|
+
* dwell time = Σ(time) for dwell operations
|
|
11
|
+
* cycleTime = cuttingTime + rapidTime + toolChangeTime + dwellTime
|
|
12
|
+
* totalTime = setupTime + cycleTime × partCount
|
|
13
|
+
* utilization = cuttingTime / cycleTime × 100
|
|
14
|
+
*
|
|
15
|
+
* @param input - Cycle time parameters
|
|
16
|
+
* @returns CycleTimeEstimatorResult with time breakdown and utilization
|
|
17
|
+
*/
|
|
18
|
+
export function cycleTimeEstimator(input) {
|
|
19
|
+
const { operations, setupTime = 0, partCount = 1 } = input;
|
|
20
|
+
let cuttingTime = 0; // seconds
|
|
21
|
+
let rapidTime = 0; // seconds
|
|
22
|
+
let toolChangeTime = 0; // seconds
|
|
23
|
+
let dwellTime = 0; // seconds
|
|
24
|
+
for (const op of operations) {
|
|
25
|
+
switch (op.type) {
|
|
26
|
+
case 'cutting': {
|
|
27
|
+
if (op.distance !== undefined && op.feedRate !== undefined && op.feedRate > 0) {
|
|
28
|
+
cuttingTime += (op.distance / op.feedRate) * 60; // mm/(mm/min) → min → sec
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
case 'rapid': {
|
|
33
|
+
if (op.distance !== undefined) {
|
|
34
|
+
const rate = op.rapidRate ?? DEFAULT_RAPID_RATE;
|
|
35
|
+
rapidTime += (op.distance / rate) * 60;
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
case 'toolChange': {
|
|
40
|
+
toolChangeTime += op.time ?? 0;
|
|
41
|
+
break;
|
|
42
|
+
}
|
|
43
|
+
case 'dwell': {
|
|
44
|
+
dwellTime += op.time ?? 0;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const cycleTime = cuttingTime + rapidTime + toolChangeTime + dwellTime;
|
|
50
|
+
const totalTime = setupTime + cycleTime * partCount;
|
|
51
|
+
const utilization = cycleTime > 0 ? (cuttingTime / cycleTime) * 100 : 0;
|
|
52
|
+
return {
|
|
53
|
+
cuttingTime: roundTo(cuttingTime, 2),
|
|
54
|
+
rapidTime: roundTo(rapidTime, 2),
|
|
55
|
+
toolChangeTime: roundTo(toolChangeTime, 2),
|
|
56
|
+
dwellTime: roundTo(dwellTime, 2),
|
|
57
|
+
cycleTime: roundTo(cycleTime, 2),
|
|
58
|
+
totalTime: roundTo(totalTime, 2),
|
|
59
|
+
utilization: roundTo(utilization, 2),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=cycleTimeEstimator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cycleTimeEstimator.js","sourceRoot":"","sources":["../../src/machining/cycleTimeEstimator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,MAAM,kBAAkB,GAAG,KAAK,CAAC,CAAC,SAAS;AAE3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAA8B;IAC/D,MAAM,EAAE,UAAU,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;IAE3D,IAAI,WAAW,GAAG,CAAC,CAAC,CAAG,UAAU;IACjC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IACjC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC,UAAU;IAClC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAK,UAAU;IAEjC,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE,CAAC;QAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;oBAC9E,WAAW,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,0BAA0B;gBAC7E,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,IAAI,EAAE,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC9B,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,IAAI,kBAAkB,CAAC;oBAChD,SAAS,IAAI,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACzC,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,cAAc,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC/B,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,SAAS,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC1B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC;IACvE,MAAM,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IACpD,MAAM,WAAW,GAAG,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,OAAO;QACL,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;QACpC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;QAChC,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { EffectiveDiameterInput, EffectiveDiameterResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the effective cutting diameter of a ball end mill at a given depth of cut.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* Deff = 2 × √(ap × (D − ap))
|
|
7
|
+
*
|
|
8
|
+
* The effective diameter determines the actual cutting speed at the depth of cut,
|
|
9
|
+
* which is smaller than the nominal diameter unless cutting at the equator.
|
|
10
|
+
*
|
|
11
|
+
* @reference Sandvik Coromant — Ball nose end mill effective cutting diameter.
|
|
12
|
+
*
|
|
13
|
+
* @param input - Effective diameter parameters
|
|
14
|
+
* @returns EffectiveDiameterResult with effective diameter
|
|
15
|
+
*/
|
|
16
|
+
export declare function effectiveDiameter(input: EffectiveDiameterInput): EffectiveDiameterResult;
|
|
17
|
+
//# sourceMappingURL=effectiveDiameter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effectiveDiameter.d.ts","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAElF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,uBAAuB,CASxF"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Calculate the effective cutting diameter of a ball end mill at a given depth of cut.
|
|
4
|
+
*
|
|
5
|
+
* @formula
|
|
6
|
+
* Deff = 2 × √(ap × (D − ap))
|
|
7
|
+
*
|
|
8
|
+
* The effective diameter determines the actual cutting speed at the depth of cut,
|
|
9
|
+
* which is smaller than the nominal diameter unless cutting at the equator.
|
|
10
|
+
*
|
|
11
|
+
* @reference Sandvik Coromant — Ball nose end mill effective cutting diameter.
|
|
12
|
+
*
|
|
13
|
+
* @param input - Effective diameter parameters
|
|
14
|
+
* @returns EffectiveDiameterResult with effective diameter
|
|
15
|
+
*/
|
|
16
|
+
export function effectiveDiameter(input) {
|
|
17
|
+
const { toolDiameter, axialDepthOfCut } = input;
|
|
18
|
+
const dEff = 2 * Math.sqrt(axialDepthOfCut * (toolDiameter - axialDepthOfCut));
|
|
19
|
+
return {
|
|
20
|
+
effectiveDiameter: roundTo(dEff, 4),
|
|
21
|
+
effectiveRpm: 0, // placeholder — requires cuttingSpeed input to compute
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=effectiveDiameter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effectiveDiameter.js","sourceRoot":"","sources":["../../src/machining/effectiveDiameter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAA6B;IAC7D,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IAEhD,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC;IAE/E,OAAO;QACL,iBAAiB,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QACnC,YAAY,EAAE,CAAC,EAAE,uDAAuD;KACzE,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { GaugeBlockStackInput, GaugeBlockStackResult } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Build a gauge block stack using successive subtraction algorithm.
|
|
4
|
+
*
|
|
5
|
+
* The algorithm works from the smallest digit up:
|
|
6
|
+
* 1. Find a block that eliminates the least significant digit
|
|
7
|
+
* 2. Subtract it from the remaining target
|
|
8
|
+
* 3. Repeat until the remaining target is 0 or no suitable block is found
|
|
9
|
+
*
|
|
10
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Gauge blocks.
|
|
11
|
+
*
|
|
12
|
+
* @param input - Gauge block stack parameters
|
|
13
|
+
* @returns GaugeBlockStackResult with selected blocks and error
|
|
14
|
+
*/
|
|
15
|
+
export declare function gaugeBlockStack(input: GaugeBlockStackInput): GaugeBlockStackResult;
|
|
16
|
+
//# sourceMappingURL=gaugeBlockStack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gaugeBlockStack.d.ts","sourceRoot":"","sources":["../../src/machining/gaugeBlockStack.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAmE9E;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,qBAAqB,CAiDlF"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { roundTo } from '../utils.js';
|
|
2
|
+
/**
|
|
3
|
+
* Metric 47-piece gauge block set (mm)
|
|
4
|
+
* Standard: Grade 1 metric set per ISO 3650
|
|
5
|
+
*/
|
|
6
|
+
const METRIC_47_SET = [
|
|
7
|
+
// Series 1: 1.001–1.009 (9 blocks, 0.001 steps)
|
|
8
|
+
1.001, 1.002, 1.003, 1.004, 1.005, 1.006, 1.007, 1.008, 1.009,
|
|
9
|
+
// Series 2: 1.01–1.49 (49 blocks → typically 1.01-1.09 step 0.01, then 1.10-1.49 step 0.10)
|
|
10
|
+
// Actually standard 47-set has:
|
|
11
|
+
// 9 × 0.001: 1.001-1.009
|
|
12
|
+
// 9 × 0.01: 1.01-1.09
|
|
13
|
+
// 9 × 0.10: 1.10-1.90 (but typically only up to 1.49 in some sets)
|
|
14
|
+
// Let's use the standard 47-piece metric set:
|
|
15
|
+
1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09,
|
|
16
|
+
// Series 3: 0.5 step
|
|
17
|
+
1.10, 1.20, 1.30, 1.40, 1.50, 1.60, 1.70, 1.80, 1.90,
|
|
18
|
+
// Series 4: whole mm
|
|
19
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9,
|
|
20
|
+
// Series 5: tens
|
|
21
|
+
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* Metric 88-piece gauge block set (mm) — extended precision
|
|
25
|
+
*/
|
|
26
|
+
const METRIC_88_SET = [
|
|
27
|
+
// 0.001 step: 1.001-1.009
|
|
28
|
+
1.001, 1.002, 1.003, 1.004, 1.005, 1.006, 1.007, 1.008, 1.009,
|
|
29
|
+
// 0.01 step: 1.01-1.49
|
|
30
|
+
1.01, 1.02, 1.03, 1.04, 1.05, 1.06, 1.07, 1.08, 1.09,
|
|
31
|
+
1.10, 1.11, 1.12, 1.13, 1.14, 1.15, 1.16, 1.17, 1.18, 1.19,
|
|
32
|
+
1.20, 1.21, 1.22, 1.23, 1.24, 1.25, 1.26, 1.27, 1.28, 1.29,
|
|
33
|
+
1.30, 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37, 1.38, 1.39,
|
|
34
|
+
1.40, 1.41, 1.42, 1.43, 1.44, 1.45, 1.46, 1.47, 1.48, 1.49,
|
|
35
|
+
// whole mm: 1-9
|
|
36
|
+
1, 2, 3, 4, 5, 6, 7, 8, 9,
|
|
37
|
+
// tens: 10-100
|
|
38
|
+
10, 20, 30, 40, 50, 60, 70, 80, 90, 100,
|
|
39
|
+
];
|
|
40
|
+
/**
|
|
41
|
+
* Inch 81-piece gauge block set
|
|
42
|
+
*/
|
|
43
|
+
const INCH_81_SET = [
|
|
44
|
+
// 0.0001 step: 0.1001-0.1009
|
|
45
|
+
0.1001, 0.1002, 0.1003, 0.1004, 0.1005, 0.1006, 0.1007, 0.1008, 0.1009,
|
|
46
|
+
// 0.001 step: 0.101-0.149
|
|
47
|
+
0.101, 0.102, 0.103, 0.104, 0.105, 0.106, 0.107, 0.108, 0.109,
|
|
48
|
+
0.110, 0.111, 0.112, 0.113, 0.114, 0.115, 0.116, 0.117, 0.118, 0.119,
|
|
49
|
+
0.120, 0.121, 0.122, 0.123, 0.124, 0.125, 0.126, 0.127, 0.128, 0.129,
|
|
50
|
+
0.130, 0.131, 0.132, 0.133, 0.134, 0.135, 0.136, 0.137, 0.138, 0.139,
|
|
51
|
+
0.140, 0.141, 0.142, 0.143, 0.144, 0.145, 0.146, 0.147, 0.148, 0.149,
|
|
52
|
+
// 0.050 step: 0.050-0.950
|
|
53
|
+
0.050, 0.100, 0.150, 0.200, 0.250, 0.300, 0.350, 0.400, 0.450,
|
|
54
|
+
0.500, 0.550, 0.600, 0.650, 0.700, 0.750, 0.800, 0.850, 0.900, 0.950,
|
|
55
|
+
// whole: 1.000-4.000
|
|
56
|
+
1.000, 2.000, 3.000, 4.000,
|
|
57
|
+
];
|
|
58
|
+
const SETS = {
|
|
59
|
+
metric47: METRIC_47_SET,
|
|
60
|
+
metric88: METRIC_88_SET,
|
|
61
|
+
inch81: INCH_81_SET,
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Build a gauge block stack using successive subtraction algorithm.
|
|
65
|
+
*
|
|
66
|
+
* The algorithm works from the smallest digit up:
|
|
67
|
+
* 1. Find a block that eliminates the least significant digit
|
|
68
|
+
* 2. Subtract it from the remaining target
|
|
69
|
+
* 3. Repeat until the remaining target is 0 or no suitable block is found
|
|
70
|
+
*
|
|
71
|
+
* @reference Oberg, E. et al. "Machinery's Handbook", 31st Ed. — Gauge blocks.
|
|
72
|
+
*
|
|
73
|
+
* @param input - Gauge block stack parameters
|
|
74
|
+
* @returns GaugeBlockStackResult with selected blocks and error
|
|
75
|
+
*/
|
|
76
|
+
export function gaugeBlockStack(input) {
|
|
77
|
+
const { targetDimension, availableSet = 'metric47' } = input;
|
|
78
|
+
const setBlocks = SETS[availableSet];
|
|
79
|
+
const used = new Set();
|
|
80
|
+
const blocks = [];
|
|
81
|
+
let remaining = roundTo(targetDimension, 4);
|
|
82
|
+
// Successive subtraction algorithm (Machinery's Handbook method):
|
|
83
|
+
// 1. Find a block that, when subtracted, eliminates the least significant non-zero digit
|
|
84
|
+
// 2. Prefer blocks that reduce the number of significant decimal places
|
|
85
|
+
// 3. Repeat until remaining is 0 or no suitable block found
|
|
86
|
+
for (let iter = 0; iter < 10 && remaining > 0.0005; iter++) {
|
|
87
|
+
let bestBlock = null;
|
|
88
|
+
let bestScore = -Infinity;
|
|
89
|
+
for (const block of setBlocks) {
|
|
90
|
+
if (used.has(block))
|
|
91
|
+
continue;
|
|
92
|
+
if (block > remaining + 0.00005)
|
|
93
|
+
continue;
|
|
94
|
+
const newRemaining = roundTo(remaining - block, 4);
|
|
95
|
+
if (newRemaining < -0.00005)
|
|
96
|
+
continue;
|
|
97
|
+
// Score: prefer blocks that eliminate more decimal places
|
|
98
|
+
// Count trailing zeros in newRemaining (fewer significant decimals = better)
|
|
99
|
+
const score = trailingZeroScore(newRemaining);
|
|
100
|
+
if (score > bestScore || (score === bestScore && block > (bestBlock ?? 0))) {
|
|
101
|
+
bestScore = score;
|
|
102
|
+
bestBlock = block;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
if (bestBlock === null)
|
|
106
|
+
break;
|
|
107
|
+
used.add(bestBlock);
|
|
108
|
+
blocks.push(bestBlock);
|
|
109
|
+
remaining = roundTo(remaining - bestBlock, 4);
|
|
110
|
+
}
|
|
111
|
+
const totalDimension = roundTo(blocks.reduce((sum, b) => sum + b, 0), 4);
|
|
112
|
+
return {
|
|
113
|
+
targetDimension,
|
|
114
|
+
blocks: blocks.sort((a, b) => b - a),
|
|
115
|
+
totalDimension,
|
|
116
|
+
error: roundTo(Math.abs(targetDimension - totalDimension), 4),
|
|
117
|
+
blockCount: blocks.length,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Score how "clean" a number is — higher score means fewer significant decimal digits.
|
|
122
|
+
* 0 → score 4, X.X → score 3, X.XX → score 2, X.XXX → score 1, X.XXXX → score 0
|
|
123
|
+
*/
|
|
124
|
+
function trailingZeroScore(value) {
|
|
125
|
+
if (Math.abs(value) < 0.00005)
|
|
126
|
+
return 4;
|
|
127
|
+
const s = value.toFixed(4);
|
|
128
|
+
const decimals = s.split('.')[1] ?? '';
|
|
129
|
+
let zeros = 0;
|
|
130
|
+
for (let i = decimals.length - 1; i >= 0; i--) {
|
|
131
|
+
if (decimals[i] === '0')
|
|
132
|
+
zeros++;
|
|
133
|
+
else
|
|
134
|
+
break;
|
|
135
|
+
}
|
|
136
|
+
return zeros;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=gaugeBlockStack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gaugeBlockStack.js","sourceRoot":"","sources":["../../src/machining/gaugeBlockStack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;GAGG;AACH,MAAM,aAAa,GAAa;IAC9B,gDAAgD;IAChD,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC7D,4FAA4F;IAC5F,gCAAgC;IAChC,yBAAyB;IACzB,sBAAsB;IACtB,mEAAmE;IACnE,8CAA8C;IAC9C,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACpD,qBAAqB;IACrB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACpD,qBAAqB;IACrB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzB,iBAAiB;IACjB,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,aAAa,GAAa;IAC9B,0BAA0B;IAC1B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC7D,uBAAuB;IACvB,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IACpD,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;IAC1D,gBAAgB;IAChB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;IACzB,eAAe;IACf,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;CACxC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAa;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACtE,0BAA0B;IAC1B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC7D,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACpE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACpE,0BAA0B;IAC1B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC7D,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IACpE,qBAAqB;IACrB,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CAC3B,CAAC;AAEF,MAAM,IAAI,GAA6B;IACrC,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,WAAW;CACpB,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IACzD,MAAM,EAAE,eAAe,EAAE,YAAY,GAAG,UAAU,EAAE,GAAG,KAAK,CAAC;IAE7D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,SAAS,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;IAE5C,kEAAkE;IAClE,yFAAyF;IACzF,wEAAwE;IACxE,4DAA4D;IAC5D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,EAAE,IAAI,SAAS,GAAG,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC;QAC3D,IAAI,SAAS,GAAkB,IAAI,CAAC;QACpC,IAAI,SAAS,GAAG,CAAC,QAAQ,CAAC;QAE1B,KAAK,MAAM,KAAK,IAAI,SAAS,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC9B,IAAI,KAAK,GAAG,SAAS,GAAG,OAAO;gBAAE,SAAS;YAE1C,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,IAAI,YAAY,GAAG,CAAC,OAAO;gBAAE,SAAS;YAEtC,0DAA0D;YAC1D,6EAA6E;YAC7E,MAAM,KAAK,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAE9C,IAAI,KAAK,GAAG,SAAS,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3E,SAAS,GAAG,KAAK,CAAC;gBAClB,SAAS,GAAG,KAAK,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,IAAI;YAAE,MAAM;QAE9B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACvB,SAAS,GAAG,OAAO,CAAC,SAAS,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEzE,OAAO;QACL,eAAe;QACf,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;QACpC,cAAc;QACd,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;QAC7D,UAAU,EAAE,MAAM,CAAC,MAAM;KAC1B,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO;QAAE,OAAO,CAAC,CAAC;IACxC,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG;YAAE,KAAK,EAAE,CAAC;;YAC5B,MAAM;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type { TruePositionInput, TruePositionResult, BoltCircleInput, BoltHole, BoltCircleResult, SineBarHeightInput, SineBarHeightResult, RadialChipThinningInput, RadialChipThinningResult, ToolMaterial, ToolDeflectionInput, ToolDeflectionResult, CuspHeightInput, CuspHeightResult, EffectiveDiameterInput, EffectiveDiameterResult, BoringBarMaterial, BoringBarDeflectionInput, BoringBarDeflectionResult, ThreadAngle, ThreadOverWiresInput, ThreadOverWiresResult, GaugeBlockStackInput, GaugeBlockStackResult, TriangleSolverInput, TriangleSolverResult, CycleTimeOperation, CycleTimeEstimatorInput, CycleTimeEstimatorResult, } from './types.js';
|
|
2
|
+
export { truePosition } from './truePosition.js';
|
|
3
|
+
export { boltCircle } from './boltCircle.js';
|
|
4
|
+
export { sineBarHeight } from './sineBarHeight.js';
|
|
5
|
+
export { radialChipThinning } from './radialChipThinning.js';
|
|
6
|
+
export { toolDeflection } from './toolDeflection.js';
|
|
7
|
+
export { cuspHeight } from './cuspHeight.js';
|
|
8
|
+
export { effectiveDiameter } from './effectiveDiameter.js';
|
|
9
|
+
export { boringBarDeflection } from './boringBarDeflection.js';
|
|
10
|
+
export { threadOverWires } from './threadOverWires.js';
|
|
11
|
+
export { gaugeBlockStack } from './gaugeBlockStack.js';
|
|
12
|
+
export { triangleSolver } from './triangleSolver.js';
|
|
13
|
+
export { cycleTimeEstimator } from './cycleTimeEstimator.js';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machining/index.ts"],"names":[],"mappings":"AACA,YAAY,EAEV,iBAAiB,EACjB,kBAAkB,EAElB,eAAe,EACf,QAAQ,EACR,gBAAgB,EAEhB,kBAAkB,EAClB,mBAAmB,EAEnB,uBAAuB,EACvB,wBAAwB,EAExB,YAAY,EACZ,mBAAmB,EACnB,oBAAoB,EAEpB,eAAe,EACf,gBAAgB,EAEhB,sBAAsB,EACtB,uBAAuB,EAEvB,iBAAiB,EACjB,wBAAwB,EACxB,yBAAyB,EAEzB,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EAErB,oBAAoB,EACpB,qBAAqB,EAErB,mBAAmB,EACnB,oBAAoB,EAEpB,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
// Functions
|
|
2
|
+
export { truePosition } from './truePosition.js';
|
|
3
|
+
export { boltCircle } from './boltCircle.js';
|
|
4
|
+
export { sineBarHeight } from './sineBarHeight.js';
|
|
5
|
+
export { radialChipThinning } from './radialChipThinning.js';
|
|
6
|
+
export { toolDeflection } from './toolDeflection.js';
|
|
7
|
+
export { cuspHeight } from './cuspHeight.js';
|
|
8
|
+
export { effectiveDiameter } from './effectiveDiameter.js';
|
|
9
|
+
export { boringBarDeflection } from './boringBarDeflection.js';
|
|
10
|
+
export { threadOverWires } from './threadOverWires.js';
|
|
11
|
+
export { gaugeBlockStack } from './gaugeBlockStack.js';
|
|
12
|
+
export { triangleSolver } from './triangleSolver.js';
|
|
13
|
+
export { cycleTimeEstimator } from './cycleTimeEstimator.js';
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/machining/index.ts"],"names":[],"mappings":"AA6CA,YAAY;AACZ,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
|