...
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:
Pricing for Materials (Sample Scripts)
Pricing for Machine Time (Sample Scripts)
Pricing for Post Processing (Sample Scripts)
Pricing for Order Fees (Sample Scripts)
...
Example Pricing Scripts to Illustrate Concepts
Table of Contents | ||
---|---|---|
|
Constant Pricing
If a fee or part should be priced the same for all users and for all orders, that can be input a single number into the script. Examples might be a fixed processing cost, a handling fee or a fixed price for internal prototyping in your company.
...
Code Block | ||
---|---|---|
| ||
let cost1 = model.volume * 0.0002; // model.volume in cubic mm let cost2 = model.area * 0.02; // model.area in square mm let price = cost1 + cost2; price; // last line contains final price |
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
...
Code Block | ||
---|---|---|
| ||
let price = model.volume * 0.0002; // model.volume in cubic mm
// Add a 10% Discount when ordering more then 10 items
if(item.quantity > 10) {
price = price * 0.90;
}
// Provide a 5% Discount for Users with a @3yourmind Address
else if(user.email && user.email.endsWith('@3yourmind.com')) {
price = price * 0.95;
}
// 90$ Discount if price is above 1500
else if(price > 1500) {
price = price - 90;
}
price; // last line contains final price |
Accounting for Additional Costs
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 = ; // € 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 materialUsedInfill = 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 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; |