From: Youness Alaoui Date: Mon, 10 Aug 2015 19:37:03 +0000 (-0400) Subject: Adding script to create lulzbot profiles from print profile files X-Git-Tag: lulzbot-15.02.1-2.01~8 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=34d38a5b95f69af477b7972af59de66742dddc20;p=cura.git Adding script to create lulzbot profiles from print profile files This script needs to be run from the root of cura repo, it expects the print profiles to be in resources/quickprint/lulzbot_profiles and it assumes a specific naming convention of the files. It will create new directories and files for the quickprint settings based on the files in lulzbot_profiles, according to the mappings in the script. Any file that doesn't match will be ignored --- diff --git a/scripts/create_lulzbot_profiles.py b/scripts/create_lulzbot_profiles.py new file mode 100755 index 00000000..0cacc05b --- /dev/null +++ b/scripts/create_lulzbot_profiles.py @@ -0,0 +1,143 @@ +#!/usr/bin/python + +import glob +import os +import sys + + +CURA_QUICKPRINT_DIR="resources/quickprint/" +PROFILES_DIR="lulzbot_profiles" + +dir_map = { + 'Mini_single_extruder_v2': ('lulzbot_mini',), + 'Mini_flexystruder_v2': ('lulzbot_mini_flexystruder',), + 'TAZ_single_extruder_0.35nozzle': ('lulzbot_TAZ_4_SingleV1', + 'lulzbot_TAZ_5_SingleV1', + 'lulzbot_TAZ_4_035nozzle', + 'lulzbot_TAZ_5_035nozzle'), + 'TAZ_single_extruder_0.5nozzle': ('lulzbot_TAZ_4_05nozzle', + 'lulzbot_TAZ_5_05nozzle'), + 'TAZ_dual_extruder_v1': ('lulzbot_TAZ_4_DualV1', + 'lulzbot_TAZ_5_DualV1'), + 'TAZ_dual_extruder_v2': ('lulzbot_TAZ_4_DualV2', + 'lulzbot_TAZ_5_DualV2'), + 'TAZ_flexystruder_v1': ('lulzbot_TAZ_4_FlexystruderV1', + 'lulzbot_TAZ_5_FlexystruderV1'), + 'TAZ_flexystruder_v2': ('lulzbot_TAZ_4_FlexystruderV2', + 'lulzbot_TAZ_5_FlexystruderV2'), + 'TAZ_flexy_dually_v1': ('lulzbot_TAZ_4_FlexyDuallyV1', + 'lulzbot_TAZ_5_FlexyDuallyV1'), + 'TAZ_flexy_dually_v2': ('lulzbot_TAZ_4_FlexyDuallyV2', + 'lulzbot_TAZ_5_FlexyDuallyV2'), +} + +material_map = { + 'ABS': 'ABS', + 'PLA': 'PLA', + 'HIPS': 'HIPS', + 'ninjaflex': 'NinjaFlex', + 'semiflex': 'SemiFlex', + 'ABS_ninjaflex': 'ABS & NinjaFlex', + 'ABS_semiflex': 'ABS & SemiFlex', + 'PLA_PVA': 'PLA & PVA', + 'ABS_dual_color': 'ABS & ABS', + 'PLA_dual_color': 'PLA & PLA', + 'PLA_PVA_support': 'PLA & PVA', +} + +material_order = { + 'ABS': 2, + 'PLA': 1, + 'HIPS': 0, + 'ninjaflex': 0, + 'semiflex': 1, + 'ABS_ninjaflex': 0, + 'ABS_semiflex': 1, + 'PLA_PVA': 2, + 'ABS_dual_color': 0, + 'PLA_dual_color': 1, + 'PLA_PVA_support': 2, +} + +profile_map = { + 'high-quality': 'High Quality', + 'medium-quality': 'Medium Quality', + 'high-speed': 'Low Quality', +} + +profile_order = { + 'high-quality': 0, + 'medium-quality': 1, + 'high-speed': 2, +} + +disable_materials = { + 'PET': ('High', 'Low', 'Normal', 'Ulti'), + 'PLA': ('High', 'Low', 'Normal', 'Ulti'), + 'ABS': ('High', 'Low', 'Normal', 'Ulti') +} + +def split_profile(filename): + material = None + profile = None + for m in material_map.keys(): + if filename.startswith(m): + material = m + for p in profile_map.keys(): + if filename.startswith(m + "_" + p): + profile = p + return (material, profile) + + return (material, profile) + +def create_machine_type(machine_type, path, dir): + files = glob.glob(os.path.join(path, "*.ini")) + path = os.path.join(CURA_QUICKPRINT_DIR, machine_type) + for file in files: + filename = os.path.basename(file) + (material, profile) = split_profile(filename) + if material is None or profile is None: + continue + profile_file = os.path.join("..", "..", "..", PROFILES_DIR, dir, filename) + if not os.path.exists(os.path.join(path, material, profile)): + os.makedirs(os.path.join(path, material, profile)) + with open(os.path.join(path, material, 'material.ini'), 'w') as f: + f.write("[info]\n") + f.write("name = %s\n" % material_map[material]) + f.write("order = %d\n" % material_order[material]) + with open(os.path.join(path, material, profile, 'profile.ini'), 'w') as f: + f.write("[info]\n") + f.write("name = %s\n" % profile_map[profile]) + f.write("order = %d\n" % profile_order[profile]) + f.write("profile_file = %s\n" % profile_file) + for material in disable_materials.keys(): + if os.path.exists(os.path.join(path, material)): + for profile in disable_materials[material]: + if not os.path.exists(os.path.join(path, material, profile)): + os.makedirs(os.path.join(path, material, profile)) + with open(os.path.join(path, material, profile, 'profile.ini'), 'w') as f: + f.write("[info]\n") + f.write("disabled = true\n") + else: + os.makedirs(os.path.join(path, material)) + with open(os.path.join(path, material, 'material.ini'), 'w') as f: + f.write("[info]\n") + f.write("disabled = true\n") + + +def main(): + if not os.path.exists(CURA_QUICKPRINT_DIR): + print "Cura path is wrong" + return -1 + + dirs = glob.glob(os.path.join(CURA_QUICKPRINT_DIR, PROFILES_DIR, "*")) + + for d in dirs: + dir = os.path.basename(d) + if dir_map.has_key(dir): + for machine_type in dir_map[dir]: + create_machine_type(machine_type, d, dir) + + +if __name__ == '__main__': + main()