Paperless Parts has created statistical models that can quickly estimate runtime and support volume for a number of popular 3D printers. Note, these numbers may not exactly match the runtime and support volume computed by your printer’s proprietary slicing tool; however, Paperless Parts estimates are typically computed in a fraction of the time required to completely slice a part.
Runtimes and support volumes are specific to a particular additive technology (e.g., FDM, SLA, SLS) and often to a particular printer make or model. Contact support to connect the best additive runtime model with your operation or to work with us to create a new model for your equipment.
To analyze a part for additive manufacturing, add this line to your pricing program:
additive = analyze_additive()
additive object will contain the attributes described below.
|Attribute||Description||Metric units||US units|
||3D print runtime||hours||hours|
||Required support volume||mm^3||in^3|
||Suggested (or overridden) orientation; value will be one of ‘x’, ‘x_neg’, ‘y’, ‘y_neg’, ‘z’, ‘z_neg’||n/a||n/a|
||Sum of part and support volume||mm^3||in^3|
|| If there is a machine with a build area associated with the operation, this will tell you if the part fits given the requested or calculated orientation; value will be
This example suggests a pricing model derived from the runtime value generated by Paperless Parts:
additive = analyze_additive() #Rates labor_rate = var('Labor Rate', 40, '$/hr', currency) machine_rate = var('Machine Rate', 2, '$/hr', currency) #Setting up setup time and runtime setup_time = var('setup_time', 0.25, 'time in hr', number) runtime = var('runtime', 0, 'time in hr', number, frozen=False) #Updating runtime runtime.update(additive.runtime) runtime.freeze() PRICE = (setup_time * labor_rate) + (machine_rate * runtime * part.qty) DAYS = 0
This example suggests a height/layer based runtime model, perhaps more useful for SLA, SLS and other powder or resin based machines:
additive = analyze_additive() #shop rates machine_rate = var('Machine Rate', 100, '$/ hr', currency) labor_rate = var('Labor Rate', 85, '$/ hr', currency) #declare default setup and runtime setup_time = var('setup_time', 0.25, 'setup time, hr', number) runtime = var('runtime', 0, 'run time, hr', number, frozen=False) #setup layer height and time per layer layer_height = var('Layer Height in mm', .08, 'Height of each layer in mm', number) layer_time = var('Layer Time, seconds', 10, 'Recoat time seconds', number) #identify number of layers on part part_layers = var('# of Layers',0, 'Total # of layers', number, frozen=False) part_layers.update(ceil(part.size_z / layer_height)) part_layers.freeze() #runtime update runtime.update((part_layers * layer_time) / 3600) runtime.freeze() PRICE = setup_time * labor_rate + runtime * machine_rate * part.qty DAYS = 0