...
Info |
---|
You don’t need to be a programmer to understand how to build a pricing script. |
There are 3 four places in the software where pricing scripts can be used:
...
Comparison and Relational operators
Name | Syntax | Examples |
Equality |
|
|
Inequality |
|
|
Greater than operator |
|
|
Greater than or equal operator |
|
|
Less than operator |
|
|
Less than or equal operator |
|
|
Providing Conditions & Discounts
...
Additional costs that are generated by your business can also be accounted for, one of the most common being labor costs for preparing build platforms.
Code Block |
---|
let labor = ; // € or $ let platformPreparationCost = ; let otherCosts = labor + platformPreparationCost/item.quantity; |
Info |
---|
In this case platform preparation cost is calculated per part (this is why platformPreparationCost variable is divided by item.quantity). |
...
Variable
...
Description
...
Unit
...
Code Block |
---|
labour |
...
Costs related to all work done by people when preparing the part for printing.
...
$ or €
...
Code Block |
---|
platformPreparationCost |
...
Cost of preparing the printer (e.g. of warming up the powder bed).
...
$ or €
// € or $
// platform preparation cost is calculated per part
let otherCosts = labor + platformPreparationCost/item.quantity; |
Sample Complete Pricing Formula for FDM
Code Block | ||
---|---|---|
| ||
//material cost let materialPrice = 80; // € or $ let materialDensity = 1.04; // g/cm^3 let supportPrice = 80; // €/kg or $/kg let supportDensity = 1.04; // g/cm^3 let infill = 0.2; // number in [0,1] let supportInfill = 0.2; // number in [0,1] let wallThickness = 2; // mm let materialUsedmaterialUsedInfill = Math.max((model.volume - model.area * wallThickness) * infill, 0); let materialUsedContour += Math.min(model.area * wallThickness, model.volume); let materialUsed = materialUsedInfill + materialUsedContour; let totalMaterialPrice = (materialUsed*materialDensity*materialPrice + support.volume*supportPrice*supportDensity*supportInfill)*0.000001; // hourly rate let priceOfMachine = 200000; // € or $ let usefulLife = 7; // years let maintenance = 40000; // € or $ let powerConsumption = 10000; // €/year or $/year let roomCost = 4000; // €/year/m^2 or $/year/m^2 let space = 10; // m^2 let spareParts = 2000; // €/year or $/year let gasUsage = 0; // €/year or $/year let workingHoursPerYear = 3500; // hours/year let hourlyRate = ((priceOfMachine + maintenance)/usefulLife + powerConsumption + roomCost*space + spareParts + gasUsage)/workingHoursPerYear; // machine time let lineWidth = 0.1; // mm let layerHeight = 0.1; // mm let speed = 45; // mm/s let wallThickness = 2; // mm let volumeFactor = 0.0010747; let areaFactor = 0.04317783; let supportFactor = 0.0003774; let exponent; if( model.volume < 3000){ exponent = 0.55; } else { exponent = 0.88; } let volumeFactor = 0.0010747; let areaFactor = 0.04317783; let supportFactor = 0.0003774; let time let volumePart = volumeFactor*(0.818182 - lineWidth)*(Math.pow(layerHeight, (-1.07)) + 0.232)*(Math.pow(speed, (-1.08)))*(Math.pow(infill*100, (1.02)))*model.volume +; let areaPart = areaFactor*(1.578431 - lineWidth)*(Math.pow(layerHeight, (-0.98)) + 0.341)* (Math.pow(wallThickness, exponent) + 0.002)*(Math.pow(speed, (-0.84)) + 0.003)*model.area +; let supportPart = supportFactor*supportInfill*support.volume; let time = volumePart + areaPart + supportPart; let machineTime = time/60; // other costs let labour = 15; // € or $ let platformPreparationCost = 200; // € or $ let otherCosts = labour + platformPreparationCost/item.quantity; // final unit price let margin = 0.1; let price = (totalMaterialPrice + hourlyRate*machineTime + otherCosts)*(1+margin); price; |