-
Notifications
You must be signed in to change notification settings - Fork 0
/
filament_profile_copy.py
60 lines (44 loc) · 2.17 KB
/
filament_profile_copy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# -*- coding: utf-8 -*-
"""
Spyder Editor
"""
import glob
import os
import shutil
git_mainlocation = r""+os.environ["GIT_VIPRINT3D_MAINLOCATION"]
git_main_path = r""+os.path.join(git_mainlocation,"bambulab_X1C_filament_profiles")
orca_filament_main_path = r""+os.environ["ORCA_FILAMENT_PROFILES_FOLDER"]
def get_viprint3d_filamentprofile(filename, sep, num_seps):
blocks = filename.split(sep)
if len(blocks) == int(num_seps+1):
return filename
else:
return False
def transfer_profile_by_name(src_location, material, profile_filename, target_location):
try:
for ending in [".json", ".info"]:
if os.path.exists(os.path.join(src_location, profile_filename+ending)):
shutil.copy2(os.path.join(src_location, profile_filename+ending),
os.path.join(target_location, material, profile_filename+ending))
return 1
except Exception as e:
print(f"Failed copying filepath: {os.path.join(orca_filament_main_path,new_profile+ending)} to location: {os.path.join(git_main_path,material,new_profile+ending)}")
return 0
material_folders = [el for el in os.listdir(
git_main_path) if el.startswith("Material_")]
materials = {material_name.split("_")[-1]: {}
for material_name in material_folders}
# Notation: Material - Colorcode - Nozzlediameter - Brand
num_seperators = 3
seperator = "-"
# Search orca folder for materials
profiles = list(set([d.split(".")[0] for d in os.listdir(orca_filament_main_path) if os.path.isfile(
os.path.join(orca_filament_main_path, d)) and get_viprint3d_filamentprofile(d, seperator, num_seperators)]))
# Create material folders if not exist
materials = list(set([profile.split(seperator)[0] for profile in profiles]))
for material_folder_path in [os.path.join(git_main_path, material.strip()) for material in materials]:
if not os.path.exists(material_folder_path):
os.makedirs(material_folder_path)
buff = [transfer_profile_by_name(orca_filament_main_path, profile_filename.split(
seperator)[0].strip(), profile_filename, git_main_path) for profile_filename in profiles]
print(f"Copyed {sum(buff)} of {len(profiles)} profiles found.")