Skip to content

Commit

Permalink
Added additonal filament vendors.
Browse files Browse the repository at this point in the history
Added Anker printers to filament presets dialog.
Added helper to generate formatted strings for dialog from profile JSON files.
  • Loading branch information
anselor committed Feb 25, 2024
1 parent 4991a3d commit bbdf7d8
Show file tree
Hide file tree
Showing 2 changed files with 65 additions and 13 deletions.
44 changes: 44 additions & 0 deletions scripts/generate_presets_vendors.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import json
from pathlib import Path
from typing import Dict, List


scripts_dir = Path(__file__).resolve().parent
print(f'Scripts dir: {scripts_dir}')
root_dir = scripts_dir.parent
profiles_dir = root_dir / 'resources' / 'profiles'

printers: Dict[str, List[str]] = {}

print(f'Looking in {profiles_dir.resolve()}')
for entry in profiles_dir.glob('*.json'):
if entry.is_file():
entry_info = json.loads(entry.read_text())
vendor_name = entry_info.get('name', None)
if vendor_name:
models = [machine.get('name', None) for machine in entry_info.get('machine_model_list', []) if machine.get('name', None)]
printers[vendor_name] = models

vendor_names = [f'"{vendor_name}",' for vendor_name in sorted(printers.keys(), key=str.casefold)]
vend_col_width = len(max(vendor_names, key=len))
vendors_formatted = ' {' + '\n '.join(' '.join(f"{vendor_name:{vend_col_width}}" for vendor_name in vendor_names[i:i+5]) for i in range(0, len(vendor_names), 5)).rstrip()[:-1] + '}'
print(vendors_formatted)


models_formatted = ' {'
models_indent = len(models_formatted) + vend_col_width + 2
for vendor_name in sorted(printers.keys(), key=str.casefold):
vendor_formatted = f'"{vendor_name}",'
models_formatted += f'{{{vendor_formatted:{vend_col_width}}{{'

model_names = printers[vendor_name]
model_names_formatted = [f'"{model_name}",' for model_name in model_names]
model_col_width = len(max(model_names_formatted, key=len))
model_names_str = ('\n' + ' ' * models_indent).join(' '.join(f"{model_name:{model_col_width}}" for model_name in model_names_formatted[i:i+5]) for i in range(0, len(model_names), 5)).rstrip()[:-1] + '}'

models_formatted += model_names_str

models_formatted += '},\n '

models_formatted = models_formatted.rstrip()[:-1]
print(models_formatted)
34 changes: 21 additions & 13 deletions src/slic3r/GUI/CreatePresetsDialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,13 +37,16 @@
namespace Slic3r {
namespace GUI {

static const std::vector<std::string> filament_vendors = {"Polymaker", "OVERTURE", "Kexcelled", "HATCHBOX", "eSUN", "SUNLU", "Prusament", "Creality", "Protopasta",
"Anycubic", "Basf", "ELEGOO", "INLAND", "FLASHFORGE", "AMOLEN", "MIKA3D", "3DXTECH", "Duramic",
"Priline", "Eryone", "3Dgunius", "Novamaker", "Justmaker", "Giantarm", "iProspect"};

static const std::vector<std::string> filament_types = {"PLA", "PLA+", "PLA Tough", "PETG", "ABS", "ASA", "FLEX", "HIPS", "PA", "PACF",
"NYLON", "PVA", "PC", "PCABS", "PCTG", "PCCF", "PP", "PEI", "PET", "PETG",
"PETGCF", "PTBA", "PTBA90A", "PEEK", "TPU93A", "TPU75D", "TPU", "TPU92A", "TPU98A", "Misc",
static const std::vector<std::string> filament_vendors =
{"3Dgenius", "3DXTECH", "3D BEST-Q", "3D Fuel", "AMOLEN", "Ankermake", "Anycubic", "Atomic", "BASF", "Beyond Plastic",
"California Filament", "ColorFabb", "Creality", "Duramic", "ELEGOO", "Eryone", "eSUN",
"Fillamentum", "FLASHFORGE", "Giantarm", "HATCHBOX", "IEMAI", "INLAND", "iProspect", "iSANMATE",
"Justmaker", "Kexcelled", "MatterHackers", "MIKA3D", "NinjaTek",
"Novamaker", "OVERTURE", "Polymaker", "Priline", "Protopasta", "Prusament", "Regen", "SUNLU", "Ultimaker"};

static const std::vector<std::string> filament_types = {"PLA", "PLA+", "PLA Tough", "PETG", "ABS", "ASA", "FLEX", "HIPS", "PA", "PACF",
"NYLON", "PVA", "PC", "PCABS", "PCTG", "PCCF", "PHA", "PP", "PEI", "PET", "PETG",
"PETGCF", "PTBA", "PTBA90A", "PEEK", "TPU93A", "TPU75D", "TPU", "TPU92A", "TPU98A", "Misc",
"TPE", "GLAZE", "Nylon", "CPE", "METAL", "ABST", "Carbon Fiber"};

static const std::vector<std::string> system_filament_types = {"PLA", "ABS", "TPU", "PC", "ASA", "PA-CF", "PA6-CF", "PET-CF", "PETG", "PETG-CF",
Expand All @@ -57,13 +60,18 @@ static std::unordered_map<std::string, std::string> system_filament_types_map =
{"HIPS", "HIPS"}, {"PPS", "PPS"}, {"PPS-CF", "PPS-CF"},
{"PVA", "PVA"}};

static const std::vector<std::string> printer_vendors = {"Anycubic", "Artillery", "BIBO", "BIQU", "Creality ENDER", "Creality CR", "Creality SERMOON",
"FLSun", "gCreate", "Geeetech", "INAT", "Infinity3D", "Jubilee", "LNL3D",
"LulzBot", "MakerGear", "Original Prusa", "Papapiu", "Print4Taste", "RatRig", "Rigid3D",
"Snapmaker", "Sovol", "TriLAB", "Trimaker", "Ultimaker", "Voron", "Zonestar"};
static const std::vector<std::string> printer_vendors =
{"Anker", "Anycubic", "Artillery", "Bambulab", "BIQU",
"Comgrow", "Creality", "Custom Printer", "Elegoo", "Flashforge",
"FLSun", "FlyingBear", "Folgertech", "InfiMech", "Kingroon",
"Orca Arena Printer", "Peopoly", "Prusa", "Qidi", "Raise3D",
"RatRig", "SecKit", "Snapmaker", "Sovol", "Tronxy",
"TwoTrees", "UltiMaker", "Vivedino", "Voron", "Voxelab",
"Vzbot", "Wanhao"};

static const std::unordered_map<std::string, std::vector<std::string>> printer_model_map =
{{"Anycubic", {"Kossel Linear Plus", "Kossel Pulley(Linear)", "Mega Zero", "i3 Mega", "Predator"}},
{{"Anker", {"Anker M5", "Anker M5 All-Metal Hot End", "Anker M5C"}},
{"Anycubic", {"Kossel Linear Plus", "Kossel Pulley(Linear)", "Mega Zero", "i3 Mega", "Predator"}},
{"Artillery", {"sidewinder X1", "Genius", "Hornet"}},
{"BIBO", {"BIBO2 Touch"}},
{"BIQU", {"BX"}},
Expand Down Expand Up @@ -748,7 +756,7 @@ wxBoxSizer *CreateFilamentPresetDialog::create_type_item()
horizontal_sizer->Add(optionSizer, 0, wxEXPAND | wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(5));

wxArrayString filament_type;
for (const wxString &filament : system_filament_types) {
for (const wxString &filament : filament_types) {
filament_type.Add(filament);
}

Expand Down

0 comments on commit bbdf7d8

Please sign in to comment.