Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info

You don’t need to be a programmer to understand how to build a pricing script.
Using and modifying the example scripts is actually quite simple.

There are 3 four places in the software where pricing scripts can be used:

...

Comparison and Relational operators

Name

Syntax

Examples

Equality

x == y

1 == 1; true
0 == 1; false

Inequality

x != y

1 != 2; true
1 != 1; false

Greater than operator

x > y

4 > 3; true

Greater than or equal operator

x >= y

4 >= 3; true
3 >= 3; true

Less than operator

x < y

3 < 4; true

Less than or equal operator

x <= y

3 <= 4; true
3 <= 3; true

Providing Conditions & Discounts

...

Code Block
languagejs
//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 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;