Python script for generating a custom material profile .FMD file for TierTime 3d Printers.
The current Mac OS X version of UP Studio allows you to import new material profiles, but it does not allow you to create new profiles. This script is an attempt at a workaround for that and allow OS X users to create custom materials as well.
I make no claim or guarantee that any of this will work at all. I've included very little input validation, I can't guarantee that any of the parameter mappings are correct. You can probably screw up UP Studio or your printer with some bad values. (It does seem that UP Studio does some input validation on material profile import.) Proceed at your own risk.
usage: tiertime_material_profile_maker.py [-h] [--template-file TEMPLATE_FILE]
[--non-encoded-template] --copy-from
{ABS,ABS+,PLA,TPU,CUSTOM} --name
NAME --manufacturer MANUFACTURER
[--temperature TEMPERATURE]
[--bed-temp BED_TEMP]
[--diameter DIAMETER]
[--density DENSITY]
[--shrinkage SHRINKAGE SHRINKAGE SHRINKAGE]
[--printer {10104,10105,10111,10114,10115,default,up_mini_2}]
[--nozzle-diameter {0.2,0.4,0.6}]
[--layer-thickness {0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4}]
[--quality {fast,fine,normal,superfast}]
[--withdraw-length WITHDRAW_LENGTH]
[--peel-ratio PEEL_RATIO]
[--line-width LINE_WIDTH LINE_WIDTH LINE_WIDTH]
[--scan-speed SCAN_SPEED SCAN_SPEED SCAN_SPEED]
[--send-ratio SEND_RATIO SEND_RATIO SEND_RATIO]
[--temp-bias TEMP_BIAS TEMP_BIAS TEMP_BIAS]
[--aspeed ASPEED ASPEED ASPEED]
[--basic-send-rate BASIC_SEND_RATE]
[--p16 P16]
[--joggle-speed JOGGLE_SPEED]
[--p18 P18] [--p19 P19]
[--part-support-hatch-scale PART_SUPPORT_HATCH_SCALE]
[--p21 P21] [--p22 P22]
[--raft-layer-thickness RAFT_LAYER_THICKNESSNESS]
[--raft-path-width RAFT_PATH_WIDTH]
[--p25 P25] [--p26 P26] [--p27 P27]
[--p28 P28] [--non-encoded-output]
output
positional arguments:
output The filename for the new custom material .fmd file
optional arguments:
-h, --help show this help message and exit
--template-file TEMPLATE_FILE
Optional alternative .FMD file to use as the source
template for customization. Defaults to
"/Applications/UP
Studio.app/Contents/Resources/DB/vendor.fmd" if not
provided.
--non-encoded-template
Template file will be assumed to not be hex encoded
and will therefor not be decoded
--copy-from {ABS,ABS+,PLA,TPU,CUSTOM}
Built-in Tiertime material to base new material on:
ABS, ABS+, PLA or TPU
--name NAME Material name, e.g. "PLA+"
--manufacturer MANUFACTURER
Manufacturer name, e.g. "eSun"
--temperature TEMPERATURE
Base extrusion temperature of material
--bed-temp BED_TEMP Print bed temperature
--diameter DIAMETER Material diameter. In my experience, I recommend not
changing this. By default, Tiertime sets this at 1.7
mm, even for 1.75 mm filaments. "Correcting" this to
1.75 seems to have a negative effect on flow rate.
--density DENSITY Material density
--shrinkage SHRINKAGE SHRINKAGE SHRINKAGE
Material shrinkage percentage
--printer {10104,10105,10111,10114,10115,default,up_mini_2}
Printer type that these customizations will be applied
to
--nozzle-diameter {0.2,0.4,0.6}
Nozzle diameter that these customizations will be
applied to
--layer-thickness {0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4}
Layer height that these customizations will be applied
to
--quality {fast,fine,normal,superfast}
Print speed/quality these customizations will be
applied to
--withdraw-length WITHDRAW_LENGTH
Material withdraw/retraction distance
--peel-ratio PEEL_RATIO
Peel ratio from 0 to 100
--line-width LINE_WIDTH LINE_WIDTH LINE_WIDTH
Line width in float [outline, infill, support]
--scan-speed SCAN_SPEED SCAN_SPEED SCAN_SPEED
Scan speed in int [outline, infill, support]
--send-ratio SEND_RATIO SEND_RATIO SEND_RATIO
Send ratio in float [outline, infill, support]
--temp-bias TEMP_BIAS TEMP_BIAS TEMP_BIAS
Temperature bias in int [outline, infill, support]
--aspeed ASPEED ASPEED ASPEED
Acceleration (?) in int [outlint, infill, support]
--basic-send-rate BASIC_SEND_RATE
Basic send rate. Seems to get recalculated based on
material density on import to UP Studio, EXPERIMENTAL
--p16 P16 Parameter p16 EXPERIMENTAL
--joggle-speed JOGGLE_SPEED
Joggle speed (travel speed???). Seems to get reset on
import to UP Studio. EXPERIMENTAL
--p18 P18 Parameter p18 EXPERIMENTAL
--p19 P19 Parameter p19 EXPERIMENTAL
--part-support-hatch-scale PART_SUPPORT_HATCH_SCALE
?? Part support hatch scale ?? EXPERIMENTAL
--p21 P21 Parameter p21 EXPERIMENTAL
--p22 P22 Parameter p22 EXPERIMENTAL
--raft-layer-thickness RAFT_LAYER_THICKNESSNESS
?? Raft layer thickness ?? EXPERIMENTAL
--raft-path-width RAFT_PATH_WIDTH
?? Raft path width ?? EXPERIMENTAL
--p25 P25 Parameter p25 EXPERIMENTAL
--p26 P26 Parameter p26 EXPERIMENTAL
--p27 P27 Parameter p27 EXPERIMENTAL
--p28 P28 Parameter p28 EXPERIMENTAL
--non-encoded-output Do not hex encode the output file. Useful if you want
to make manual changes before encoding.
Example of creating a custom material profile, with configurations for several different printers, layer thicknesses, and speeds. Note how we name the material CUSTOM until the final step so that we can do --copy-from CUSTOM (--copy-from being limited to ABS,ABS+,PLA,TPU and CUSTOM). Also note the use of --non-encoded-output and --non-encoded-template to allow manual edits to be made to the .fmd file:
python tiertime_material_profile_maker.py --copy-from PLA --name CUSTOM --manufacturer CUSTOM --temperature 205 --bed-temp 0 custom.fmd
python tiertime_material_profile_maker.py --template-file custom.fmd --copy-from CUSTOM --name CUSTOM --manufacturer CUSTOM --printer default --nozzle-diameter 0.4 --layer-thickness 0.15 --line-width 0.42 0.72 0.55 --scan-speed 21 42 42 --aspeed 1000 1000 1000 custom.fmd
python tiertime_material_profile_maker.py --template-file custom.fmd --copy-from CUSTOM --name CUSTOM --manufacturer CUSTOM --printer default --nozzle-diameter 0.4 --layer-thickness 0.2 --line-width 0.4 0.75 0.55 --scan-speed 21 42 42 --aspeed 1000 1000 1000 custom.fmd
python tiertime_material_profile_maker.py --template-file custom.fmd --copy-from CUSTOM --name CUSTOM --manufacturer CUSTOM --printer up_mini_2 --nozzle-diameter 0.4 --layer-thickness 0.15 --line-width 0.42 0.72 0.55 --scan-speed 21 42 42 --aspeed 1000 1000 1000 custom.fmd
python tiertime_material_profile_maker.py --template-file custom.fmd --copy-from CUSTOM --name CUSTOM --manufacturer CUSTOM --printer up_mini_2 --nozzle-diameter 0.4 --layer-thickness 0.2 --line-width 0.4 0.75 0.55 --scan-speed 21 42 42 --aspeed 1000 1000 1000 --non-encoded-output UNENCODED_custom.fmd
# Open UNENCODED_custom.fmd in a text editor, validate, make some manual edits, etc.
python tiertime_material_profile_maker.py --template-file UNENCODED_custom.fmd --non-encoded-template --copy-from CUSTOM --name 205PLA+ --manufacturer eSun --printer up_mini_2 --nozzle-diameter 0.4 --layer-thickness 0.15 --speed normal esun_plaplus_205.fmd