Versions Compared

Key

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

...

Code Block
languagejs
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 €/year/m^2

let space = 10;                      // $/year or €/year
let spareParts = 2000;               // $/year or €/year
let gasUsage = 0;                    // $/year or €/year
let workingHoursPerYear = 3500;      // h/year

// Don't change the following lines
let hourlyRate = ((priceOfMachine + maintenance)/usefulLife + powerConsumption +
roomCost*space + spareParts + gasUsage)/workingHoursPerYear;
Warning

To ensure a proper calculation, do not change the final line of code:

let hourlyRate = ((priceOfMachine + maintenance)/depreciation + powerConsumption + roomCost*space + spareParts +
gasUsage)/workingHoursPerYear;

Each variable can then be defined with a constant value or mathematical calculation using available variables from the 3YOURMIND model analysis (next section).

...

Variable

...

Description

...

Unit

...

Code Block
languagejs
priceOfMachine

...

Purchase price of the printer.

...

$ or €

...

Code Block
languagejs
usefulLife

...

Period during which the printer will be used to generate revenue.

...

years

...

Code Block
maintenance

...

Overall maintenance cost during the useful life.

...

$ or €

...

Code Block
languagejs
powerConsumption

...

Cost of power used during one year of work.

...

$/year or €/year

...

Code Block
languagejs
roomCost

...

Cost of renting one square meter over a period of one year.

...

$/year/m^2 or year €/year/m^2

...

Code Block
languagejs
space

...

Room taken up by the machine.

...

$/year or €/year

...

Code Block
languagejs
gasUsage

...

Applicable to some of the printers only. Annual cost of gas used for printing.

...

$/year or €/year

...

Code Block
workingHoursPerYear

...

Number of hours the printer is supposed to work during a year.

...

Sample Machine Time Pricing Scripts

...

To ensure a proper calculation, do not change any of these lines of code:

let exponent;
if ( model.volume < 3000){
exponent = 0.55;
} else {
exponent = 0.88;
}
let time = volumeFactor*(0.818182 - lineWidth)*(Math.pow(layerHeight, (-1.07)) + 0.232)*(Math.pow(speed, (-1.08)))*(Math.pow(infill*100, (1.02)))*model.volume + 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 + supportFactor*supportInfill*support.volume;
let machineTime = time/60;
Code Block
languagejs
let lineWidth = 0.1;              // mm
let layerHeight = 0.1;            // mm
let speed = 45;                   // mm/s
let infill = 0.2;                 // number in [0,1]
let wallThickness = 2;            // mm
let supportInfill = 0.2;          // number in [0,1]

let volumeFactor = 0.0010747;     // number, describes importance of model's volume
let areaFactor = 0.04317783;      // number, describes importance of model's surface area
let supportFactor = 0.0003774;    // number, describes importance of support volume

// Don't change the following lines
let exponent;
if( model.volume < 3000){
        exponent = 0.55;
} else {
        exponent = 0.88;
        }

let timevolumePart = 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 machineTime = time/60;
Warning

...

Variable

...

Description

...

Unit

...

Code Block
languagejs
lineWidth 

...

Width of the filament after leaving the extruder.

...

mm

...

Code Block
layerHeight 

...

Height of a single layer.

...

mm

...

Code Block
speed

...

Velocity of the extruder when printing.

...

mm/s

...

Code Block
infill

...

Structure used to take up space inside an empty 3D print.

...

0 <= infill <= 1

...

Code Block
wallThickness

...

Thickness of the model's wall.

...

mm

...

Code Block
supportInfill

...

Structure used to take up space inside support.

...

0 <= infill <= 1

Info
The following variables: volumeFactor, areaFactor and supportFactor describe the importance of model's volume, area and support volume to the overall machine time value. One can modify these values in order to increase/decrease the impact of the parameters on the printing time.
time = volumePart + areaPart + supportPart; // time in minutes

let machineTime = time/60;                      // time in hours

SLS Machine Time Formula

Two factors will have an impact on the machine time: the model's volume that needs to be sintered, and the model's height, as consecutive layers will require the machine to lower the powder bed and put new material on the platform. Furthermore, in the case of more than one model being placed on the platform, the total machine time will not be simply a sum of unit printing times, as adding new parts of lower or the same height as the tallest model will not change the time related to preparation of all layers required to print all parts.

...

Code Block
let scanningSpeed = 45;            // mm/s
let laserDiameter = 0.1;           // mm
let layerHeight = 0.2;             // mm
let layerPreparationTime = 10;  let machineTime = (model.volume/(scanningSpeed*laserDiameter*layerHeight) +
layerPreparationTime*model.h/layerHeight/item.quantity)/3600;
Warning

To ensure a proper calculation, do not change any of these lines of code:

let machineTime =
// sec

// Don't change the following lines
let machineTime = (model.volume/(scanningSpeed*laserDiameter*layerHeight) +
layerPreparationTime*model.h/layerHeight/item.quantity)/3600;

...

Variable

...

Description

...

Unit

...

Code Block
languagejs
scanningSpeed

...

Speed of the laser.

...

mm/s

...

Code Block
laserDiameter

...

Diameter of the laser beam.

...

mm


...

Height of a single layer

...

...

Code Block
layerPreparationTime  

...

Time to prepare next layer, i.e. to lower the bed and apply new material.

...

sec

DMLS/SLM Machine Time Formula

...

Code Block
let scanningSpeed = 40;              // mm/s
let supportScanningSpeed = 40;       // mm/s
let laserDiameter = 0.1;             // mm
let layerHeight = 0.1;               // mm
let layerPreparationTime = 10;       // sec
let supportInfill = 0.2;        let   machineTime = ((model.volume)/(scanningSpeed*laserDiameter*layerHeight) +
support.volume*supportInfill/(supportScanningSpeed*laserDiameter*layerHeight) +
layerPreparationTime*model.h/layerHeight/item.quantity)/3600;
Warning
To ensure a proper calculation, do not change any of these lines of code:
let machineTime =
 // number in [0,1]

// Don't change the following lines
let machineTime = ((model.volume)/(scanningSpeed*laserDiameter*layerHeight) +
support.volume*supportInfill/(supportScanningSpeed*laserDiameter*layerHeight) +
layerPreparationTime*model.h/layerHeight/item.quantity)/3600;

...

Variable

...

Description

...

Unit

...

Code Block
languagejs
scanningSpeed

...

Speed of the laser when scanning the model.

...

mm/s

...

Code Block
supportScanningSpeed  

...

Speed of the laser when scanning the support structures.

...

mm/s

...

Code Block
layerHeight 

...

Height of a single layer.

...

mm

...

Code Block
layerPreparationTime

...

Time to prepare next layer, i.e. to lower the bed and apply new material.

...

sec

...

Code Block
supportInfill

...

Structure used to take up space inside support.

...

0 <= infill <= 1

MJF Machine Time Formula

This process is similar to SLS, the main difference being the heat source. SLS uses a laser to scan and sinter each cross-section, while in MJF an ink (fusing agent) is dispensed on the powder that promotes the absorption of infrared light. An infrared energy source then passes over the building platform and fuses the inked areas. In SLS each cross section is fused point-by-point, while in MJF fusing happens in a line-wise fashion.

...

Code Block
let singleLayerPrintTime = 15;         // sec
let layerHeight = 0.2;   let numberOfLayers = model.h/layerHeight;
let machineTime = singleLayerPrintTime*numberOfLayers/item.quantity;
Warning

To ensure a proper calculation, do not change any of these lines of code:

let numberOfLayers =
              // mm

// Don't change the following lines
let numberOfLayers = model.h/layerHeight;


let machineTime = singleLayerPrintTime*numberOfLayers/item.quantity;

...

...

Description

...

Unit

...

Code Block
languagejs
singleLayerPrintTime

...

Time it takes to scan one layer.

...

sec

...

Code Block
layerHeight   

...

Height of a single layer.

...

mm

CLIP Machine Time Formula

Code Block
let maxXYSurface = 1000;        // xy surface of the printer in mm^2
let timePerHeight = 10;         // h/mm model's height

// Don't change the following line
let time = (model.h*timePerHeight)*((model.w*model.d)/maxXYSurface);

...