formulab 0.1.0 → 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 +283 -2
- package/README.md +147 -48
- 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/gearRatio.d.ts +2 -2
- package/dist/automotive/gearRatio.d.ts.map +1 -1
- package/dist/automotive/gearRatio.js +1 -1
- package/dist/automotive/gearRatio.js.map +1 -1
- 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 +18 -2
- 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/injectionCycle.d.ts +3 -0
- package/dist/chemical/injectionCycle.d.ts.map +1 -1
- package/dist/chemical/injectionCycle.js +1 -4
- package/dist/chemical/injectionCycle.js.map +1 -1
- package/dist/chemical/ph.d.ts +3 -0
- package/dist/chemical/ph.d.ts.map +1 -1
- package/dist/chemical/ph.js +1 -4
- package/dist/chemical/ph.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.d.ts +3 -0
- package/dist/chemical/reactor.d.ts.map +1 -1
- package/dist/chemical/reactor.js +3 -6
- package/dist/chemical/reactor.js.map +1 -1
- package/dist/chemical/shelfLife.d.ts.map +1 -1
- package/dist/chemical/shelfLife.js +1 -7
- package/dist/chemical/shelfLife.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/awg.d.ts.map +1 -1
- package/dist/electronics/awg.js +1 -4
- package/dist/electronics/awg.js.map +1 -1
- package/dist/electronics/capacitor.d.ts +3 -0
- package/dist/electronics/capacitor.d.ts.map +1 -1
- package/dist/electronics/capacitor.js +1 -4
- package/dist/electronics/capacitor.js.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/led.d.ts.map +1 -1
- package/dist/electronics/led.js +1 -4
- package/dist/electronics/led.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/smt-takt.d.ts +3 -0
- package/dist/electronics/smt-takt.d.ts.map +1 -1
- package/dist/electronics/smt-takt.js +1 -4
- package/dist/electronics/smt-takt.js.map +1 -1
- package/dist/electronics/solder.d.ts +3 -0
- package/dist/electronics/solder.d.ts.map +1 -1
- package/dist/electronics/solder.js +1 -4
- package/dist/electronics/solder.js.map +1 -1
- package/dist/electronics/stencil.d.ts.map +1 -1
- package/dist/electronics/stencil.js +1 -4
- package/dist/electronics/stencil.js.map +1 -1
- package/dist/electronics/trace.d.ts.map +1 -1
- package/dist/electronics/trace.js +1 -4
- package/dist/electronics/trace.js.map +1 -1
- package/dist/electronics/types.d.ts +24 -0
- package/dist/electronics/types.d.ts.map +1 -1
- package/dist/electronics/via.d.ts.map +1 -1
- package/dist/electronics/via.js +1 -4
- package/dist/electronics/via.js.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 +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- 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/eoq.d.ts.map +1 -1
- package/dist/logistics/eoq.js +11 -0
- package/dist/logistics/eoq.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/bearing.d.ts.map +1 -1
- package/dist/metal/bearing.js +1 -4
- package/dist/metal/bearing.js.map +1 -1
- 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 +4 -7
- package/dist/metal/bolt.js.map +1 -1
- package/dist/metal/cutting.d.ts.map +1 -1
- package/dist/metal/cutting.js +1 -4
- package/dist/metal/cutting.js.map +1 -1
- package/dist/metal/cuttingStock.d.ts.map +1 -1
- package/dist/metal/cuttingStock.js +1 -4
- package/dist/metal/cuttingStock.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/gear.d.ts.map +1 -1
- package/dist/metal/gear.js +1 -4
- package/dist/metal/gear.js.map +1 -1
- package/dist/metal/hardness.d.ts.map +1 -1
- package/dist/metal/hardness.js +1 -4
- package/dist/metal/hardness.js.map +1 -1
- 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/pressFit.d.ts.map +1 -1
- package/dist/metal/pressFit.js +1 -4
- package/dist/metal/pressFit.js.map +1 -1
- package/dist/metal/pressTonnage.d.ts +10 -4
- package/dist/metal/pressTonnage.d.ts.map +1 -1
- package/dist/metal/pressTonnage.js +199 -25
- package/dist/metal/pressTonnage.js.map +1 -1
- package/dist/metal/roughness.d.ts.map +1 -1
- package/dist/metal/roughness.js +2 -5
- package/dist/metal/roughness.js.map +1 -1
- package/dist/metal/screw.d.ts.map +1 -1
- package/dist/metal/screw.js +1 -4
- package/dist/metal/screw.js.map +1 -1
- package/dist/metal/spring.d.ts.map +1 -1
- package/dist/metal/spring.js +1 -4
- package/dist/metal/spring.js.map +1 -1
- package/dist/metal/tap.d.ts.map +1 -1
- package/dist/metal/tap.js +1 -4
- package/dist/metal/tap.js.map +1 -1
- package/dist/metal/thread.d.ts.map +1 -1
- package/dist/metal/thread.js +1 -4
- package/dist/metal/thread.js.map +1 -1
- package/dist/metal/tolerance.d.ts.map +1 -1
- package/dist/metal/tolerance.js +1 -4
- package/dist/metal/tolerance.js.map +1 -1
- package/dist/metal/types.d.ts +100 -13
- package/dist/metal/types.d.ts.map +1 -1
- package/dist/metal/vibration.d.ts.map +1 -1
- package/dist/metal/vibration.js +1 -4
- package/dist/metal/vibration.js.map +1 -1
- package/dist/metal/weldHeat.d.ts +2 -1
- package/dist/metal/weldHeat.d.ts.map +1 -1
- package/dist/metal/weldHeat.js +203 -44
- 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/aql.d.ts.map +1 -1
- package/dist/quality/aql.js +1 -4
- package/dist/quality/aql.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/downtime.d.ts.map +1 -1
- package/dist/quality/downtime.js +1 -4
- package/dist/quality/downtime.js.map +1 -1
- package/dist/quality/dpmo.d.ts.map +1 -1
- package/dist/quality/dpmo.js +2 -65
- 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/lineBalancing.d.ts.map +1 -1
- package/dist/quality/lineBalancing.js +1 -4
- package/dist/quality/lineBalancing.js.map +1 -1
- package/dist/quality/mtbf.d.ts.map +1 -1
- package/dist/quality/mtbf.js +1 -4
- package/dist/quality/mtbf.js.map +1 -1
- package/dist/quality/oee.d.ts +13 -1
- package/dist/quality/oee.d.ts.map +1 -1
- package/dist/quality/oee.js +30 -9
- package/dist/quality/oee.js.map +1 -1
- package/dist/quality/ppk.d.ts.map +1 -1
- package/dist/quality/ppk.js +2 -20
- package/dist/quality/ppk.js.map +1 -1
- package/dist/quality/ppm.d.ts.map +1 -1
- package/dist/quality/ppm.js +2 -84
- package/dist/quality/ppm.js.map +1 -1
- package/dist/quality/rpn.d.ts.map +1 -1
- package/dist/quality/rpn.js +1 -4
- package/dist/quality/rpn.js.map +1 -1
- package/dist/quality/types.d.ts +31 -0
- package/dist/quality/types.d.ts.map +1 -1
- package/dist/quality/yield.d.ts.map +1 -1
- package/dist/quality/yield.js +1 -4
- package/dist/quality/yield.js.map +1 -1
- package/dist/safety/fallClearance.d.ts +12 -3
- package/dist/safety/fallClearance.d.ts.map +1 -1
- package/dist/safety/fallClearance.js +73 -17
- 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 +25 -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/assignment.d.ts.map +1 -1
- package/dist/utility/assignment.js +1 -7
- package/dist/utility/assignment.js.map +1 -1
- package/dist/utility/index.d.ts +2 -2
- package/dist/utility/index.d.ts.map +1 -1
- package/dist/utility/index.js +1 -1
- package/dist/utility/index.js.map +1 -1
- package/dist/utility/types.d.ts +0 -16
- package/dist/utility/types.d.ts.map +1 -1
- package/dist/utility/unit.d.ts +1 -1
- package/dist/utility/unit.d.ts.map +1 -1
- package/dist/utility/unit.js +2 -8
- package/dist/utility/unit.js.map +1 -1
- package/dist/utils.d.ts +5 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +11 -2
- package/dist/utils.js.map +1 -1
- package/package.json +37 -4
- 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
package/dist/logistics/cbm.js
CHANGED
|
@@ -13,8 +13,13 @@ function toMeters(value, unit) {
|
|
|
13
13
|
/**
|
|
14
14
|
* Calculate Cubic Meter (CBM) for shipping cargo
|
|
15
15
|
*
|
|
16
|
-
* CBM
|
|
17
|
-
*
|
|
16
|
+
* @formula CBM = Length × Width × Height (all converted to meters)
|
|
17
|
+
* - Total CBM = CBM per unit × Quantity
|
|
18
|
+
*
|
|
19
|
+
* @reference Physical volume formula (L × W × H).
|
|
20
|
+
* @reference Industry standard: 20ft container internal ≈ 33.2 m³, 40ft ≈ 67.7 m³.
|
|
21
|
+
*
|
|
22
|
+
* @units input: mm, cm, or m; output: m³
|
|
18
23
|
*
|
|
19
24
|
* @param input - Cargo dimensions and quantity
|
|
20
25
|
* @returns CBM per unit and total CBM
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cbm.js","sourceRoot":"","sources":["../../src/logistics/cbm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;GAEG;AACH,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAuB;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,GAAG,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;QACvB,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"cbm.js","sourceRoot":"","sources":["../../src/logistics/cbm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;GAEG;AACH,SAAS,QAAQ,CAAC,KAAa,EAAE,IAAuB;IACtD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,IAAI,CAAC;QAC/B,KAAK,IAAI,CAAC,CAAC,OAAO,KAAK,GAAG,GAAG,CAAC;QAC9B,KAAK,GAAG,CAAC,CAAC,OAAO,KAAK,CAAC;QACvB,OAAO,CAAC,CAAC,OAAO,KAAK,CAAC;IACxB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAExD,+BAA+B;IAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEvC,yBAAyB;IACzB,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;IAE9C,sBAAsB;IACtB,MAAM,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IAEvC,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;KAC/B,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eoq.d.ts","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"eoq.d.ts","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEtD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,CA2C9C"}
|
package/dist/logistics/eoq.js
CHANGED
|
@@ -16,6 +16,17 @@ import { roundTo } from '../utils.js';
|
|
|
16
16
|
*/
|
|
17
17
|
export function eoq(input) {
|
|
18
18
|
const { annualDemand, orderCost, holdingCost } = input;
|
|
19
|
+
// Input validation
|
|
20
|
+
if (annualDemand <= 0 || orderCost <= 0 || holdingCost <= 0) {
|
|
21
|
+
return {
|
|
22
|
+
eoq: 0,
|
|
23
|
+
ordersPerYear: 0,
|
|
24
|
+
orderCycleDays: 0,
|
|
25
|
+
annualOrderingCost: 0,
|
|
26
|
+
annualHoldingCost: 0,
|
|
27
|
+
totalAnnualCost: 0,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
19
30
|
// Calculate EOQ using the classic formula
|
|
20
31
|
// EOQ = sqrt(2DS/H)
|
|
21
32
|
const eoqValue = Math.sqrt((2 * annualDemand * orderCost) / holdingCost);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eoq.js","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEvD,0CAA0C;IAC1C,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC;IAEzE,4BAA4B;IAC5B,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAC;IAE9C,mDAAmD;IACnD,MAAM,cAAc,GAAG,GAAG,GAAG,aAAa,CAAC;IAE3C,uCAAuC;IACvC,MAAM,kBAAkB,GAAG,aAAa,GAAG,SAAS,CAAC;IAErD,sCAAsC;IACtC,mFAAmF;IACnF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;IAEvD,iEAAiE;IACjE,MAAM,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IAE/D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"eoq.js","sourceRoot":"","sources":["../../src/logistics/eoq.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,GAAG,CAAC,KAAe;IACjC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAEvD,mBAAmB;IACnB,IAAI,YAAY,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QAC5D,OAAO;YACL,GAAG,EAAE,CAAC;YACN,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,kBAAkB,EAAE,CAAC;YACrB,iBAAiB,EAAE,CAAC;YACpB,eAAe,EAAE,CAAC;SACnB,CAAC;IACJ,CAAC;IAED,0CAA0C;IAC1C,oBAAoB;IACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,SAAS,CAAC,GAAG,WAAW,CAAC,CAAC;IAEzE,4BAA4B;IAC5B,MAAM,aAAa,GAAG,YAAY,GAAG,QAAQ,CAAC;IAE9C,mDAAmD;IACnD,MAAM,cAAc,GAAG,GAAG,GAAG,aAAa,CAAC;IAE3C,uCAAuC;IACvC,MAAM,kBAAkB,GAAG,aAAa,GAAG,SAAS,CAAC;IAErD,sCAAsC;IACtC,mFAAmF;IACnF,MAAM,iBAAiB,GAAG,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,WAAW,CAAC;IAEvD,iEAAiE;IACjE,MAAM,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;IAE/D,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QACzB,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QAC1C,kBAAkB,EAAE,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAClD,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChD,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fillRate.d.ts","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fillRate.d.ts","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,cAAc,CA2B7D;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CA0BzE"}
|
|
@@ -1,21 +1,5 @@
|
|
|
1
1
|
import { roundTo } from '../utils.js';
|
|
2
|
-
|
|
3
|
-
* Cumulative Distribution Function for standard normal distribution
|
|
4
|
-
* Uses the Horner form of the rational approximation
|
|
5
|
-
*/
|
|
6
|
-
function normalCDF(z) {
|
|
7
|
-
const a1 = 0.254829592;
|
|
8
|
-
const a2 = -0.284496736;
|
|
9
|
-
const a3 = 1.421413741;
|
|
10
|
-
const a4 = -1.453152027;
|
|
11
|
-
const a5 = 1.061405429;
|
|
12
|
-
const p = 0.3275911;
|
|
13
|
-
const sign = z < 0 ? -1 : 1;
|
|
14
|
-
const x = Math.abs(z) / Math.SQRT2;
|
|
15
|
-
const t = 1 / (1 + p * x);
|
|
16
|
-
const erf = 1 - ((((a5 * t + a4) * t + a3) * t + a2) * t + a1) * t * Math.exp(-x * x);
|
|
17
|
-
return 0.5 * (1 + sign * erf);
|
|
18
|
-
}
|
|
2
|
+
import { normalCDF } from '../math.js';
|
|
19
3
|
/**
|
|
20
4
|
* Calculate Fill Rate
|
|
21
5
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fillRate.js","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"fillRate.js","sourceRoot":"","sources":["../../src/logistics/fillRate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CAAC,KAAoB;IAC3C,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IAE9C,6BAA6B;IAC7B,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,aAAa,EAAE,GAAG;YAClB,cAAc,EAAE,CAAC;YACjB,SAAS,EAAE,CAAC;SACb,CAAC;IACJ,CAAC;IAED,sCAAsC;IACtC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,WAAW,CAAC,CAAC;IACxE,MAAM,SAAS,GAAG,WAAW,GAAG,YAAY,CAAC;IAE7C,sBAAsB;IACtB,MAAM,IAAI,GAAG,CAAC,YAAY,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC;IAChD,MAAM,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC;IAEjC,OAAO;QACL,QAAQ,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1B,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;QACxC,cAAc,EAAE,YAAY;QAC5B,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAAC,KAAwB;IACnD,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC;IAE5C,6BAA6B;IAC7B,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,MAAM,EAAE,CAAC;YACT,YAAY,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACxC,mBAAmB,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9C,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,MAAM,MAAM,GAAG,WAAW,GAAG,YAAY,CAAC;IAE1C,2DAA2D;IAC3D,mEAAmE;IACnE,kCAAkC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACtC,MAAM,mBAAmB,GAAG,GAAG,GAAG,KAAK,CAAC;IAExC,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1B,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;KACrD,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safetyStock.d.ts","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"safetyStock.d.ts","sourceRoot":"","sources":["../../src/logistics/safetyStock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEtE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,iBAAiB,CA2BtE"}
|
|
@@ -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"}
|