From 727a3887c52df2bd8be856c6a863dd8042068348 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 15 Jan 2025 22:40:27 +0800 Subject: [PATCH 1/8] Add Orca Filament Library --- resources/profiles/OrcaFilamentLibrary.json | 84 ++++++++++ .../OrcaFilamentLibrary/filament/ABS.json | 17 +++ .../OrcaFilamentLibrary/filament/ASA.json | 17 +++ .../OrcaFilamentLibrary/filament/PA-CF.json | 23 +++ .../OrcaFilamentLibrary/filament/PA.json | 21 +++ .../OrcaFilamentLibrary/filament/PC.json | 18 +++ .../OrcaFilamentLibrary/filament/PETG.json | 48 ++++++ .../OrcaFilamentLibrary/filament/PLA-CF.json | 24 +++ .../OrcaFilamentLibrary/filament/PLA.json | 20 +++ .../OrcaFilamentLibrary/filament/PVA.json | 24 +++ .../OrcaFilamentLibrary/filament/TPU.json | 15 ++ .../filament/fdm_filament_abs.json | 88 +++++++++++ .../filament/fdm_filament_asa.json | 88 +++++++++++ .../filament/fdm_filament_common.json | 144 ++++++++++++++++++ .../filament/fdm_filament_pa.json | 85 +++++++++++ .../filament/fdm_filament_pc.json | 88 +++++++++++ .../filament/fdm_filament_pet.json | 82 ++++++++++ .../filament/fdm_filament_pla.json | 94 ++++++++++++ .../filament/fdm_filament_pva.json | 100 ++++++++++++ .../filament/fdm_filament_tpu.json | 88 +++++++++++ resources/web/guide/22/22.js | 4 +- src/libslic3r/Preset.cpp | 14 +- src/libslic3r/PresetBundle.cpp | 95 +++++++----- src/libslic3r/PresetBundle.hpp | 12 +- src/slic3r/GUI/ConfigWizard.cpp | 33 ++-- src/slic3r/GUI/GCodeViewer.cpp | 2 +- src/slic3r/GUI/GUI_App.cpp | 2 +- src/slic3r/GUI/WebGuideDialog.cpp | 38 ++--- src/slic3r/GUI/WebGuideDialog.hpp | 2 +- src/slic3r/Utils/PresetUpdater.cpp | 10 +- 30 files changed, 1283 insertions(+), 97 deletions(-) create mode 100644 resources/profiles/OrcaFilamentLibrary.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/ABS.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/ASA.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PA.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PC.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PETG.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PLA-CF.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PLA.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PVA.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/TPU.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json new file mode 100644 index 0000000000..8422993b6b --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -0,0 +1,84 @@ +{ + "name": "OrcaFilamentLibrary", + "version": "02.02.00.04", + "force_update": "0", + "description": "Orca Filament Library", + "filament_list": [ + { + "name": "fdm_filament_common", + "sub_path": "filament/fdm_filament_common.json" + }, + { + "name": "fdm_filament_pla", + "sub_path": "filament/fdm_filament_pla.json" + }, + { + "name": "fdm_filament_tpu", + "sub_path": "filament/fdm_filament_tpu.json" + }, + { + "name": "fdm_filament_pet", + "sub_path": "filament/fdm_filament_pet.json" + }, + { + "name": "fdm_filament_abs", + "sub_path": "filament/fdm_filament_abs.json" + }, + { + "name": "fdm_filament_pc", + "sub_path": "filament/fdm_filament_pc.json" + }, + { + "name": "fdm_filament_asa", + "sub_path": "filament/fdm_filament_asa.json" + }, + { + "name": "fdm_filament_pva", + "sub_path": "filament/fdm_filament_pva.json" + }, + { + "name": "fdm_filament_pa", + "sub_path": "filament/fdm_filament_pa.json" + }, + { + "name": "PLA", + "sub_path": "filament/PLA.json" + }, + { + "name": "PLA-CF", + "sub_path": "filament/PLA-CF.json" + }, + { + "name": "PETG", + "sub_path": "filament/PETG.json" + }, + { + "name": "ABS", + "sub_path": "filament/ABS.json" + }, + { + "name": "TPU", + "sub_path": "filament/TPU.json" + }, + { + "name": "ASA", + "sub_path": "filament/ASA.json" + }, + { + "name": "PC", + "sub_path": "filament/PC.json" + }, + { + "name": "PVA", + "sub_path": "filament/PVA.json" + }, + { + "name": "PA", + "sub_path": "filament/PA.json" + }, + { + "name": "PA-CF", + "sub_path": "filament/PA-CF.json" + } + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/ABS.json b/resources/profiles/OrcaFilamentLibrary/filament/ABS.json new file mode 100644 index 0000000000..44070049e0 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/ABS.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "filament_id": "GFB99", + "setting_id": "GFSA04", + "name": "ABS", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_abs", + "filament_flow_ratio": [ + "0.926" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/ASA.json b/resources/profiles/OrcaFilamentLibrary/filament/ASA.json new file mode 100644 index 0000000000..cf8550658a --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/ASA.json @@ -0,0 +1,17 @@ +{ + "type": "filament", + "filament_id": "GFB98", + "setting_id": "GFSA04", + "name": "ASA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_asa", + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json b/resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json new file mode 100644 index 0000000000..dd6a8b6821 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json @@ -0,0 +1,23 @@ +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "PA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "filament_type": [ + "PA-CF" + ], + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PA.json b/resources/profiles/OrcaFilamentLibrary/filament/PA.json new file mode 100644 index 0000000000..6066074460 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/PA.json @@ -0,0 +1,21 @@ +{ + "type": "filament", + "filament_id": "GFN99", + "setting_id": "GFSA04", + "name": "PA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pa", + "nozzle_temperature_initial_layer": [ + "280" + ], + "nozzle_temperature": [ + "280" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "compatible_printers": [ + + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PC.json b/resources/profiles/OrcaFilamentLibrary/filament/PC.json new file mode 100644 index 0000000000..f312594a28 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/PC.json @@ -0,0 +1,18 @@ +{ + "type": "filament", + "filament_id": "GFC99", + "setting_id": "GFSA04", + "name": "PC", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pc", + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.94" + ], + "compatible_printers": [ + + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PETG.json b/resources/profiles/OrcaFilamentLibrary/filament/PETG.json new file mode 100644 index 0000000000..4f1a274205 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/PETG.json @@ -0,0 +1,48 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "PETG", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pet", + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "10" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ], + "compatible_printers": [ + + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PLA-CF.json b/resources/profiles/OrcaFilamentLibrary/filament/PLA-CF.json new file mode 100644 index 0000000000..331000a180 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/PLA-CF.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFL98", + "setting_id": "GFSA04", + "name": "PLA-CF", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.95" + ], + "filament_type": [ + "PLA-CF" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "7" + ], + "compatible_printers": [ + + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PLA.json b/resources/profiles/OrcaFilamentLibrary/filament/PLA.json new file mode 100644 index 0000000000..db4f22f2cc --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/PLA.json @@ -0,0 +1,20 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "PLA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "8" + ], + "compatible_printers": [ + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PVA.json b/resources/profiles/OrcaFilamentLibrary/filament/PVA.json new file mode 100644 index 0000000000..cfc400222b --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/PVA.json @@ -0,0 +1,24 @@ +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFSA04", + "name": "PVA", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pva", + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "7" + ], + "slow_down_min_speed": [ + "10" + ], + "compatible_printers": [ + + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/TPU.json b/resources/profiles/OrcaFilamentLibrary/filament/TPU.json new file mode 100644 index 0000000000..9c59eaea0a --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/TPU.json @@ -0,0 +1,15 @@ +{ + "type": "filament", + "filament_id": "GFU99", + "setting_id": "GFSA04", + "name": "TPU", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_tpu", + "filament_max_volumetric_speed": [ + "3.2" + ], + "compatible_printers": [ + + ] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json new file mode 100644 index 0000000000..b9d4eeda31 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_abs", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ABS" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json new file mode 100644 index 0000000000..262c561bda --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_asa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "105" + ], + "eng_plate_temp" : [ + "105" + ], + "hot_plate_temp" : [ + "105" + ], + "textured_plate_temp" : [ + "105" + ], + "cool_plate_temp_initial_layer" : [ + "105" + ], + "eng_plate_temp_initial_layer" : [ + "105" + ], + "hot_plate_temp_initial_layer" : [ + "105" + ], + "textured_plate_temp_initial_layer" : [ + "105" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "35" + ], + "filament_max_volumetric_speed": [ + "28.6" + ], + "filament_type": [ + "ASA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "260" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "80" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "80" + ], + "nozzle_temperature": [ + "260" + ], + "temperature_vitrification": [ + "110" + ], + "nozzle_temperature_range_low": [ + "240" + ], + "nozzle_temperature_range_high": [ + "270" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "3" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json new file mode 100644 index 0000000000..6c199d1e5c --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json @@ -0,0 +1,144 @@ +{ + "type": "filament", + "name": "fdm_filament_common", + "from": "system", + "instantiation": "false", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "overhang_fan_threshold": [ + "95%" + ], + "overhang_fan_speed": [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "filament_end_gcode": [ + "; filament end gcode \n" + ], + "filament_flow_ratio": [ + "1" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_cooling_layer_time": [ + "60" + ], + "filament_cost": [ + "0" + ], + "filament_density": [ + "0" + ], + "filament_deretraction_speed": [ + "nil" + ], + "filament_diameter": [ + "1.75" + ], + "filament_max_volumetric_speed": [ + "0" + ], + "filament_minimal_purge_on_wipe_tower": [ + "15" + ], + "filament_retraction_minimum_travel": [ + "nil" + ], + "filament_retract_before_wipe": [ + "nil" + ], + "filament_retract_when_changing_layer": [ + "nil" + ], + "filament_retraction_length": [ + "nil" + ], + "filament_z_hop": [ + "nil" + ], + "filament_z_hop_types": [ + "nil" + ], + "filament_retract_restart_extra": [ + "nil" + ], + "filament_retraction_speed": [ + "nil" + ], + "filament_settings_id": [ + "" + ], + "filament_soluble": [ + "0" + ], + "filament_type": [ + "PLA" + ], + "filament_vendor": [ + "OrcaSlicer" + ], + "filament_wipe": [ + "nil" + ], + "filament_wipe_distance": [ + "nil" + ], + "bed_type": [ + "Cool Plate" + ], + "nozzle_temperature_initial_layer": [ + "200" + ], + "full_fan_speed_layer": [ + "0" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "35" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_start_gcode": [ + "; Filament gcode\n" + ], + "nozzle_temperature": [ + "200" + ], + "temperature_vitrification": [ + "100" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json new file mode 100644 index 0000000000..58f53cd451 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json @@ -0,0 +1,85 @@ +{ + "type": "filament", + "name": "fdm_filament_pa", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "100" + ], + "hot_plate_temp" : [ + "100" + ], + "textured_plate_temp" : [ + "100" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "100" + ], + "hot_plate_temp_initial_layer" : [ + "100" + ], + "textured_plate_temp_initial_layer" : [ + "100" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "4" + ], + "filament_max_volumetric_speed": [ + "8" + ], + "filament_type": [ + "PA" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "reduce_fan_stop_start_freq": [ + "0" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "0" + ], + "overhang_fan_speed": [ + "30" + ], + "nozzle_temperature": [ + "290" + ], + "temperature_vitrification": [ + "108" + ], + "nozzle_temperature_range_low": [ + "270" + ], + "nozzle_temperature_range_high": [ + "300" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json new file mode 100644 index 0000000000..cec8b89a38 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_pc", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "0" + ], + "eng_plate_temp" : [ + "110" + ], + "hot_plate_temp" : [ + "110" + ], + "textured_plate_temp" : [ + "110" + ], + "cool_plate_temp_initial_layer" : [ + "0" + ], + "eng_plate_temp_initial_layer" : [ + "110" + ], + "hot_plate_temp_initial_layer" : [ + "110" + ], + "textured_plate_temp_initial_layer" : [ + "110" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "30" + ], + "filament_max_volumetric_speed": [ + "23.2" + ], + "filament_type": [ + "PC" + ], + "filament_density": [ + "1.04" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "270" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "60" + ], + "fan_min_speed": [ + "10" + ], + "overhang_fan_threshold": [ + "25%" + ], + "overhang_fan_speed": [ + "60" + ], + "nozzle_temperature": [ + "280" + ], + "temperature_vitrification": [ + "140" + ], + "nozzle_temperature_range_low": [ + "260" + ], + "nozzle_temperature_range_high": [ + "280" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "2" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json new file mode 100644 index 0000000000..bb2323e9c1 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json @@ -0,0 +1,82 @@ +{ + "type": "filament", + "name": "fdm_filament_pet", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "80" + ], + "textured_plate_temp" : [ + "80" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "80" + ], + "textured_plate_temp_initial_layer" : [ + "80" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "close_fan_the_first_x_layers": [ + "3" + ], + "fan_cooling_layer_time": [ + "20" + ], + "filament_max_volumetric_speed": [ + "25" + ], + "filament_type": [ + "PETG" + ], + "filament_density": [ + "1.27" + ], + "filament_cost": [ + "30" + ], + "nozzle_temperature_initial_layer": [ + "255" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "20" + ], + "overhang_fan_speed": [ + "100" + ], + "nozzle_temperature": [ + "255" + ], + "temperature_vitrification": [ + "80" + ], + "nozzle_temperature_range_low": [ + "220" + ], + "nozzle_temperature_range_high": [ + "260" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json new file mode 100644 index 0000000000..82c6772f35 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json @@ -0,0 +1,94 @@ +{ + "type": "filament", + "name": "fdm_filament_pla", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_type": [ + "PLA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "cool_plate_temp" : [ + "60" + ], + "eng_plate_temp" : [ + "60" + ], + "hot_plate_temp" : [ + "60" + ], + "textured_plate_temp" : [ + "60" + ], + "cool_plate_temp_initial_layer" : [ + "60" + ], + "eng_plate_temp_initial_layer" : [ + "60" + ], + "hot_plate_temp_initial_layer" : [ + "60" + ], + "textured_plate_temp_initial_layer" : [ + "60" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "230" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json new file mode 100644 index 0000000000..ebf25aa3ae --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json @@ -0,0 +1,100 @@ +{ + "type": "filament", + "name": "fdm_filament_pva", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "35" + ], + "eng_plate_temp" : [ + "0" + ], + "hot_plate_temp" : [ + "45" + ], + "textured_plate_temp" : [ + "45" + ], + "cool_plate_temp_initial_layer" : [ + "35" + ], + "eng_plate_temp_initial_layer" : [ + "0" + ], + "hot_plate_temp_initial_layer" : [ + "45" + ], + "textured_plate_temp_initial_layer" : [ + "45" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_soluble": [ + "1" + ], + "filament_is_support": [ + "1" + ], + "filament_type": [ + "PVA" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "nozzle_temperature_initial_layer": [ + "220" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "overhang_fan_threshold": [ + "50%" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "220" + ], + "temperature_vitrification": [ + "50" + ], + "nozzle_temperature_range_low": [ + "190" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "4" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json new file mode 100644 index 0000000000..d00b7dbcab --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json @@ -0,0 +1,88 @@ +{ + "type": "filament", + "name": "fdm_filament_tpu", + "from": "system", + "instantiation": "false", + "inherits": "fdm_filament_common", + "cool_plate_temp" : [ + "30" + ], + "eng_plate_temp" : [ + "30" + ], + "hot_plate_temp" : [ + "35" + ], + "textured_plate_temp" : [ + "35" + ], + "cool_plate_temp_initial_layer" : [ + "30" + ], + "eng_plate_temp_initial_layer" : [ + "30" + ], + "hot_plate_temp_initial_layer" : [ + "35" + ], + "textured_plate_temp_initial_layer" : [ + "35" + ], + "fan_cooling_layer_time": [ + "100" + ], + "filament_max_volumetric_speed": [ + "15" + ], + "filament_type": [ + "TPU" + ], + "filament_density": [ + "1.24" + ], + "filament_cost": [ + "20" + ], + "filament_retraction_length": [ + "0.4" + ], + "nozzle_temperature_initial_layer": [ + "240" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_max_speed": [ + "100" + ], + "fan_min_speed": [ + "100" + ], + "overhang_fan_speed": [ + "100" + ], + "additional_cooling_fan_speed": [ + "70" + ], + "close_fan_the_first_x_layers": [ + "1" + ], + "nozzle_temperature": [ + "240" + ], + "temperature_vitrification": [ + "60" + ], + "nozzle_temperature_range_low": [ + "200" + ], + "nozzle_temperature_range_high": [ + "250" + ], + "filament_start_gcode": [ + "; filament start gcode\n" + ] +} diff --git a/resources/web/guide/22/22.js b/resources/web/guide/22/22.js index cdb00f26c8..90f0bcef68 100644 --- a/resources/web/guide/22/22.js +++ b/resources/web/guide/22/22.js @@ -2,7 +2,7 @@ var m_ProfileItem; var FilamentPriority=new Array( "pla","abs","pet","tpu","pc"); -var VendorPriority=new Array("bambu lab","bambulab","bbl","kexcelled","polymaker","esun","generic"); +var VendorPriority=new Array("Orca Built-in","bambu lab","bambulab","bbl","kexcelled","polymaker","esun","Generic"); function OnInit() { @@ -139,7 +139,7 @@ function SortUI() if( fModel=='') { // Orca: hide - bFind=false; + bFind=true; } else { diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 1906013cbd..b09171ee0e 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -566,9 +566,10 @@ std::string Preset::label(bool no_alias) const bool is_compatible_with_print(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_print, const PresetWithVendorProfile &active_printer) { - if (preset.vendor != nullptr && preset.vendor != active_printer.vendor) - // The current profile has a vendor assigned and it is different from the active print's vendor. - return false; + // Orca: we allow cross vendor compatibility + // if (preset.vendor != nullptr && preset.vendor != active_printer.vendor) + // // The current profile has a vendor assigned and it is different from the active print's vendor. + // return false; auto &condition = preset.preset.compatible_prints_condition(); auto *compatible_prints = dynamic_cast(preset.preset.config.option("compatible_prints")); bool has_compatible_prints = compatible_prints != nullptr && ! compatible_prints->values.empty(); @@ -603,9 +604,10 @@ bool is_compatible_with_parent_printer(const PresetWithVendorProfile& preset, co bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer, const DynamicPrintConfig *extra_config) { - if (preset.vendor != nullptr && preset.vendor != active_printer.vendor) - // The current profile has a vendor assigned and it is different from the active print's vendor. - return false; + // Orca: we allow cross vendor compatibility + // if (preset.vendor != nullptr && preset.vendor != active_printer.vendor) + // // The current profile has a vendor assigned and it is different from the active print's vendor. + // return false; auto &condition = preset.preset.compatible_printers_condition(); auto *compatible_printers = dynamic_cast(preset.preset.config.option("compatible_printers")); bool has_compatible_printers = compatible_printers != nullptr && ! compatible_printers->values.empty(); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 039930c387..7fd5ff1ce2 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -43,11 +43,12 @@ static std::vector s_project_options { "flush_multiplier", }; -//BBS: add BBL as default -const char *PresetBundle::BBL_BUNDLE = "Custom"; -const char *PresetBundle::BBL_DEFAULT_PRINTER_MODEL = "MyKlipper 0.4 nozzle"; -const char *PresetBundle::BBL_DEFAULT_PRINTER_VARIANT = "0.4"; -const char *PresetBundle::BBL_DEFAULT_FILAMENT = "My Generic PLA"; +//Orca: add custom as default +const char *PresetBundle::ORCA_DEFAULT_BUNDLE = "Custom"; +const char *PresetBundle::ORCA_DEFAULT_PRINTER_MODEL = "MyKlipper 0.4 nozzle"; +const char *PresetBundle::ORCA_DEFAULT_PRINTER_VARIANT = "0.4"; +const char *PresetBundle::ORCA_DEFAULT_FILAMENT = "My Generic PLA"; +const char *PresetBundle::ORCA_FILAMENT_LIBRARY = "OrcaFilamentLibrary"; PresetBundle::PresetBundle() : prints(Preset::TYPE_PRINT, Preset::print_options(), static_cast(FullPrintConfig::defaults())) @@ -1094,7 +1095,7 @@ void PresetBundle::remove_users_preset(AppConfig &config, std::mapconfig.has("printer_model")) { @@ -1244,45 +1245,59 @@ std::pair PresetBundle::load_system_pre PresetsConfigSubstitutions substitutions; std::string errors_cummulative; bool first = true; - for (auto &dir_entry : boost::filesystem::directory_iterator(dir)) - { + std::vector vendor_names; + // store all vendor names in vendor_names + for (auto& dir_entry : boost::filesystem::directory_iterator(dir)) { std::string vendor_file = dir_entry.path().string(); - if (Slic3r::is_json_file(vendor_file)) { - std::string vendor_name = dir_entry.path().filename().string(); - // Remove the .json suffix. - vendor_name.erase(vendor_name.size() - 5); + if (!Slic3r::is_json_file(vendor_file)) + continue; - if (validation_mode && !vendor_to_validate.empty() && vendor_name != vendor_to_validate) - continue; + std::string vendor_name = dir_entry.path().filename().string(); - try { - // Load the config bundle, flatten it. - if (first) { - // Reset this PresetBundle and load the first vendor config. - append(substitutions, this->load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem, compatibility_rule).first); - first = false; - } else { - // Load the other vendor configs, merge them with this PresetBundle. - // Report duplicate profiles. - PresetBundle other; - append(substitutions, other.load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem, compatibility_rule).first); - std::vector duplicates = this->merge_presets(std::move(other)); - if (! duplicates.empty()) { - errors_cummulative += "Found duplicated settings in vendor " + vendor_name + "'s json file lists: "; - for (size_t i = 0; i < duplicates.size(); ++ i) { - if (i > 0) - errors_cummulative += ", "; - errors_cummulative += duplicates[i]; - } + // Remove the .json suffix. + vendor_name.erase(vendor_name.size() - 5); + vendor_names.push_back(vendor_name); + } + // Move ORCA_FILAMENT_LIBRARY to the beginning of the list + for (size_t i = 0; i < vendor_names.size(); ++ i) { + if (vendor_names[i] == ORCA_FILAMENT_LIBRARY) { + std::swap(vendor_names[0], vendor_names[i]); + break; + } + } + + for (auto &vendor_name : vendor_names) + { + if (validation_mode && !vendor_to_validate.empty() && vendor_name != vendor_to_validate) + continue; + + try { + // Load the config bundle, flatten it. + if (first) { + // Reset this PresetBundle and load the first vendor config. + append(substitutions, this->load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem, compatibility_rule).first); + first = false; + } else { + // Load the other vendor configs, merge them with this PresetBundle. + // Report duplicate profiles. + PresetBundle other; + append(substitutions, other.load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem, compatibility_rule).first); + std::vector duplicates = this->merge_presets(std::move(other)); + if (! duplicates.empty()) { + errors_cummulative += "Found duplicated settings in vendor " + vendor_name + "'s json file lists: "; + for (size_t i = 0; i < duplicates.size(); ++ i) { + if (i > 0) + errors_cummulative += ", "; + errors_cummulative += duplicates[i]; } } - } catch (const std::runtime_error &err) { - if (validation_mode) - throw err; - else { - errors_cummulative += err.what(); - errors_cummulative += "\n"; - } + } + } catch (const std::runtime_error &err) { + if (validation_mode) + throw err; + else { + errors_cummulative += err.what(); + errors_cummulative += "\n"; } } } diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index da952dde27..50592876e0 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -261,11 +261,13 @@ public: std::pair load_system_filaments_json(ForwardCompatibilitySubstitutionRule compatibility_rule); VendorProfile get_custom_vendor_models() const; - //BBS: add BBL as default - static const char *BBL_BUNDLE; - static const char *BBL_DEFAULT_PRINTER_MODEL; - static const char *BBL_DEFAULT_PRINTER_VARIANT; - static const char *BBL_DEFAULT_FILAMENT; + //orca: add 'custom' as default + static const char *ORCA_DEFAULT_BUNDLE; + static const char *ORCA_DEFAULT_PRINTER_MODEL; + static const char *ORCA_DEFAULT_PRINTER_VARIANT; + static const char *ORCA_DEFAULT_FILAMENT; + static const char *ORCA_FILAMENT_LIBRARY; + static std::array types_list(PrinterTechnology pt) { if (pt == ptFFF) diff --git a/src/slic3r/GUI/ConfigWizard.cpp b/src/slic3r/GUI/ConfigWizard.cpp index 1768d8cd47..f6c059e540 100644 --- a/src/slic3r/GUI/ConfigWizard.cpp +++ b/src/slic3r/GUI/ConfigWizard.cpp @@ -123,18 +123,18 @@ BundleMap BundleMap::load() const auto vendor_dir = (boost::filesystem::path(Slic3r::data_dir()) / PRESET_SYSTEM_DIR).make_preferred(); const auto rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred(); - //BBS: add BBL as default - //BBS: add json logic for vendor bundle - auto bbl_bundle_path = (vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json"); - auto bbl_bundle_rsrc = false; - if (!boost::filesystem::exists(bbl_bundle_path)) { - bbl_bundle_path = (rsrc_vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json"); - bbl_bundle_rsrc = true; + //Orca: add custom as default + //Orca: add json logic for vendor bundle + auto orca_bundle_path = (vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json"); + auto orca_bundle_rsrc = false; + if (!boost::filesystem::exists(orca_bundle_path)) { + orca_bundle_path = (rsrc_vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json"); + orca_bundle_rsrc = true; } { Bundle bbl_bundle; - if (bbl_bundle.load(std::move(bbl_bundle_path), bbl_bundle_rsrc, true)) - res.emplace(PresetBundle::BBL_BUNDLE, std::move(bbl_bundle)); + if (bbl_bundle.load(std::move(orca_bundle_path), orca_bundle_rsrc, true)) + res.emplace(PresetBundle::ORCA_DEFAULT_BUNDLE, std::move(bbl_bundle)); } // Load the other bundles in the datadir/vendor directory @@ -163,10 +163,10 @@ BundleMap BundleMap::load() Bundle& BundleMap::bbl_bundle() { - //BBS: add BBL as default - auto it = find(PresetBundle::BBL_BUNDLE); + //Orca: add custom as default + auto it = find(PresetBundle::ORCA_DEFAULT_BUNDLE); if (it == end()) { - throw Slic3r::RuntimeError("ConfigWizard: Internal error in BundleMap: BBL_BUNDLE not loaded"); + throw Slic3r::RuntimeError("ConfigWizard: Internal error in BundleMap: ORCA_DEFAULT_BUNDLE not loaded"); } return it->second; @@ -625,12 +625,11 @@ std::set PagePrinters::get_selected_models() void PagePrinters::set_run_reason(ConfigWizard::RunReason run_reason) { - //BBS: add BBL as default + //Orca: add custom as default if (is_primary_printer_page && (run_reason == ConfigWizard::RR_DATA_EMPTY || run_reason == ConfigWizard::RR_DATA_LEGACY) && printer_pickers.size() > 0 - && printer_pickers[0]->vendor_id == PresetBundle::BBL_BUNDLE) { - //BBS: select alll bbs machine by default + && printer_pickers[0]->vendor_id == PresetBundle::ORCA_DEFAULT_BUNDLE) { //printer_pickers[0]->select_one(0, true); printer_pickers[0]->select_all(true); } @@ -1941,8 +1940,8 @@ void ConfigWizard::priv::create_3rdparty_pages() { for (const auto &pair : bundles) { const VendorProfile *vendor = pair.second.vendor_profile; - //BBS: add BBL as default - if (vendor->id == PresetBundle::BBL_BUNDLE) { continue; } + //Orca: add custom as default + if (vendor->id == PresetBundle::ORCA_DEFAULT_BUNDLE) { continue; } bool is_fff_technology = false; bool is_sla_technology = false; diff --git a/src/slic3r/GUI/GCodeViewer.cpp b/src/slic3r/GUI/GCodeViewer.cpp index 00b9685861..0190594182 100644 --- a/src/slic3r/GUI/GCodeViewer.cpp +++ b/src/slic3r/GUI/GCodeViewer.cpp @@ -845,7 +845,7 @@ void GCodeViewer::init(ConfigOptionMode mode, PresetBundle* preset_bundle) } if (filename.empty()) { - filename = preset_bundle->get_hotend_model_for_printer_model(PresetBundle::BBL_DEFAULT_PRINTER_MODEL); + filename = preset_bundle->get_hotend_model_for_printer_model(PresetBundle::ORCA_DEFAULT_PRINTER_MODEL); } } } diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index 2cbbd21683..9e3bd6c5d6 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -4736,7 +4736,7 @@ void GUI_App::start_sync_user_preset(bool with_progress_dlg) m_sync_update_thread = Slic3r::create_thread( [this, progressFn, cancelFn, finishFn, t = std::weak_ptr(m_user_sync_token)] { // get setting list, update setting list - std::string version = preset_bundle->get_vendor_profile_version(PresetBundle::BBL_BUNDLE).to_string(); + std::string version = preset_bundle->get_vendor_profile_version(PresetBundle::ORCA_DEFAULT_BUNDLE).to_string(); int ret = m_agent->get_setting_list2(version, [this](auto info) { auto type = info[BBL_JSON_KEY_TYPE]; auto name = info[BBL_JSON_KEY_NAME]; diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index f8994ff929..48315505bd 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -592,7 +592,7 @@ bool GuideFrame::IsFirstUse() if (strVal == "1") return false; - if (bbl_bundle_rsrc == true) + if (orca_bundle_rsrc == true) return true; return true; @@ -881,11 +881,11 @@ bool GuideFrame::apply_config(AppConfig *app_config, PresetBundle *preset_bundle variant.clear(); return std::string(); }; - // Prusa printers are considered first, then 3rd party. - if (preferred_model = get_preferred_printer_model(PresetBundle::BBL_BUNDLE, preferred_variant); + // Orca "custom" printers are considered first, then 3rd party. + if (preferred_model = get_preferred_printer_model(PresetBundle::ORCA_DEFAULT_BUNDLE, preferred_variant); preferred_model.empty()) { for (const auto& bundle : enabled_vendors) { - if (bundle.first == PresetBundle::BBL_BUNDLE) { continue; } + if (bundle.first == PresetBundle::ORCA_DEFAULT_BUNDLE) { continue; } if (preferred_model = get_preferred_printer_model(bundle.first, preferred_variant); !preferred_model.empty()) break; @@ -962,10 +962,10 @@ bool GuideFrame::run() //we install the default here bool apply_keeped_changes = false; //clear filament section and use default materials - app.app_config->set_variant(PresetBundle::BBL_BUNDLE, - PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, "true"); + app.app_config->set_variant(PresetBundle::ORCA_DEFAULT_BUNDLE, + PresetBundle::ORCA_DEFAULT_PRINTER_MODEL, PresetBundle::ORCA_DEFAULT_PRINTER_VARIANT, "true"); app.app_config->clear_section(AppConfig::SECTION_FILAMENTS); - app.preset_bundle->load_selections(*app.app_config, {PresetBundle::BBL_DEFAULT_PRINTER_MODEL, PresetBundle::BBL_DEFAULT_PRINTER_VARIANT, PresetBundle::BBL_DEFAULT_FILAMENT, std::string()}); + app.preset_bundle->load_selections(*app.app_config, {PresetBundle::ORCA_DEFAULT_PRINTER_MODEL, PresetBundle::ORCA_DEFAULT_PRINTER_VARIANT, PresetBundle::ORCA_DEFAULT_FILAMENT, std::string()}); app.app_config->set_legacy_datadir(false); app.update_mode(); @@ -1099,13 +1099,13 @@ int GuideFrame::LoadProfile() vendor_dir = (boost::filesystem::path(Slic3r::data_dir()) / PRESET_SYSTEM_DIR ).make_preferred(); rsrc_vendor_dir = (boost::filesystem::path(resources_dir()) / "profiles").make_preferred(); - // BBS: add BBL as default - // BBS: add json logic for vendor bundle - auto bbl_bundle_path = vendor_dir; - bbl_bundle_rsrc = false; - if (!boost::filesystem::exists((vendor_dir / PresetBundle::BBL_BUNDLE).replace_extension(".json"))) { - bbl_bundle_path = rsrc_vendor_dir; - bbl_bundle_rsrc = true; + // Orca: add custom as default + // Orca: add json logic for vendor bundle + auto orca_custom_bundle_path = vendor_dir; + orca_bundle_rsrc = false; + if (!boost::filesystem::exists((vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json"))) { + orca_custom_bundle_path = rsrc_vendor_dir; + orca_bundle_rsrc = true; } // intptr_t handle; @@ -1126,8 +1126,8 @@ int GuideFrame::LoadProfile() //} while (_findnext(handle, &findData) == 0); // ??????????? - //load BBL bundle from user data path - string targetPath = bbl_bundle_path.make_preferred().string(); + //load custom bundle from user data path + string targetPath = orca_custom_bundle_path.make_preferred().string(); boost::filesystem::path myPath(targetPath); boost::filesystem::directory_iterator endIter; for (boost::filesystem::directory_iterator iter(myPath); iter != endIter; iter++) { @@ -1143,7 +1143,7 @@ int GuideFrame::LoadProfile() strVendor = strVendor.AfterLast('/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); - if (w2s(strVendor) == PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json") == 0) + if ((w2s(strVendor) == PresetBundle::ORCA_DEFAULT_BUNDLE || w2s(strVendor) == PresetBundle::ORCA_FILAMENT_LIBRARY) && strExtension.CmpNoCase("json") == 0) LoadProfileFamily(w2s(strVendor), iter->path().string()); } } @@ -1162,13 +1162,13 @@ int GuideFrame::LoadProfile() strVendor = strVendor.AfterLast('/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); - if (w2s(strVendor) != PresetBundle::BBL_BUNDLE && strExtension.CmpNoCase("json")==0) + if (w2s(strVendor) != PresetBundle::ORCA_DEFAULT_BUNDLE && w2s(strVendor) != PresetBundle::ORCA_FILAMENT_LIBRARY && strExtension.CmpNoCase("json")==0) LoadProfileFamily(w2s(strVendor), iter->path().string()); } } - //LoadProfileFamily(PresetBundle::BBL_BUNDLE, bbl_bundle_path.string()); + //LoadProfileFamily(PresetBundle::ORCA_DEFAULT_BUNDLE, bbl_bundle_path.string()); const auto enabled_filaments = wxGetApp().app_config->has_section(AppConfig::SECTION_FILAMENTS) ? wxGetApp().app_config->get_section(AppConfig::SECTION_FILAMENTS) : std::map(); m_appconfig_new.set_vendors(*wxGetApp().app_config); diff --git a/src/slic3r/GUI/WebGuideDialog.hpp b/src/slic3r/GUI/WebGuideDialog.hpp index 4fd495fe6d..98ce915f51 100644 --- a/src/slic3r/GUI/WebGuideDialog.hpp +++ b/src/slic3r/GUI/WebGuideDialog.hpp @@ -103,7 +103,7 @@ private: wxString m_SectionName; - bool bbl_bundle_rsrc; + bool orca_bundle_rsrc; boost::filesystem::path vendor_dir; boost::filesystem::path rsrc_vendor_dir; diff --git a/src/slic3r/Utils/PresetUpdater.cpp b/src/slic3r/Utils/PresetUpdater.cpp index cdd91eb22e..41cd23acdd 100644 --- a/src/slic3r/Utils/PresetUpdater.cpp +++ b/src/slic3r/Utils/PresetUpdater.cpp @@ -1071,8 +1071,7 @@ bool PresetUpdater::priv::install_bundles_rsrc(std::vector bundles, } -//BBS: refine preset update logic -// Install indicies from resources. Only installs those that are either missing or older than in resources. +// Orca: copy/update the vendor profiles from resource to system folder void PresetUpdater::priv::check_installed_vendor_profiles() const { BOOST_LOG_TRIVIAL(info) << "[Orca Updater]:Checking whether the profile from resource is newer"; @@ -1080,8 +1079,9 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const AppConfig *app_config = GUI::wxGetApp().app_config; const auto enabled_vendors = app_config->vendors(); - //BBS: refine the init check logic std::vector bundles; + // Orca: always install filament library + bundles.push_back(PresetBundle::ORCA_FILAMENT_LIBRARY); for (auto &dir_entry : boost::filesystem::directory_iterator(rsrc_path)) { const auto &path = dir_entry.path(); std::string file_path = path.string(); @@ -1111,11 +1111,11 @@ void PresetUpdater::priv::check_installed_vendor_profiles() const fs::remove_all(path_of_vendor); } } - else if ((vendor_name == PresetBundle::BBL_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) {//if vendor has no file, copy it from resource for BBL + else if ((vendor_name == PresetBundle::ORCA_DEFAULT_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) {//if vendor has no file, copy it from resource for ORCA_DEFAULT_BUNDLE bundles.push_back(vendor_name); } } - else if ((vendor_name == PresetBundle::BBL_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) { //always update configs from resource to vendor for BBL + else if ((vendor_name == PresetBundle::ORCA_DEFAULT_BUNDLE) || (enabled_vendors.find(vendor_name) != enabled_vendors.end())) { //always update configs from resource to vendor for ORCA_DEFAULT_BUNDLE bundles.push_back(vendor_name); } } From f8698d89a4be743a6b59234fe854ef8bdb892117 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 15 Jan 2025 22:54:56 +0800 Subject: [PATCH 2/8] Move compatible_printers from developer mode to Advance mode --- src/libslic3r/PrintConfig.cpp | 22 +++++++++++----------- src/slic3r/GUI/Tab.cpp | 19 ++++++++----------- 2 files changed, 19 insertions(+), 22 deletions(-) diff --git a/src/libslic3r/PrintConfig.cpp b/src/libslic3r/PrintConfig.cpp index 278cda17c6..eafd14d506 100644 --- a/src/libslic3r/PrintConfig.cpp +++ b/src/libslic3r/PrintConfig.cpp @@ -1261,38 +1261,38 @@ void PrintConfigDef::init_fff_params() def = this->add("compatible_printers", coStrings); def->label = L("Compatible machine"); - def->mode = comDevelop; + def->mode = comAdvanced; def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; //BBS. def = this->add("upward_compatible_machine", coStrings); def->label = L("upward compatible machine"); - def->mode = comDevelop; + def->mode = comAdvanced; def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_printers_condition", coString); def->label = L("Compatible machine condition"); - //def->tooltip = L("A boolean expression using the configuration values of an active printer profile. " - // "If this expression evaluates to true, this profile is considered compatible " - // "with the active printer profile."); - def->mode = comDevelop; + def->tooltip = L("A boolean expression using the configuration values of an active printer profile. " + "If this expression evaluates to true, this profile is considered compatible " + "with the active printer profile."); + def->mode = comAdvanced; def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints", coStrings); def->label = L("Compatible process profiles"); - def->mode = comDevelop; + def->mode = comAdvanced; def->set_default_value(new ConfigOptionStrings()); def->cli = ConfigOptionDef::nocli; def = this->add("compatible_prints_condition", coString); def->label = L("Compatible process profiles condition"); - //def->tooltip = L("A boolean expression using the configuration values of an active print profile. " - // "If this expression evaluates to true, this profile is considered compatible " - // "with the active print profile."); - def->mode = comDevelop; + def->tooltip = L("A boolean expression using the configuration values of an active print profile. " + "If this expression evaluates to true, this profile is considered compatible " + "with the active print profile."); + def->mode = comAdvanced; def->set_default_value(new ConfigOptionString()); def->cli = ConfigOptionDef::nocli; diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 27a85e0276..180760e5ad 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -2381,7 +2381,6 @@ page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only v option.opt.height = 25;//250; optgroup->append_single_option_line(option); -#if 1 page = add_options_page(L("Dependencies"), "custom-gcode_advanced"); optgroup = page->new_optgroup(L("Profile dependencies")); @@ -2394,7 +2393,6 @@ page = add_options_page(L("Others"), "custom-gcode_other"); // ORCA: icon only v optgroup->append_single_option_line(option); build_preset_description_line(optgroup.get()); -#endif } // Reload current config (aka presets->edited_preset->config) into the UI fields. @@ -3527,14 +3525,6 @@ void TabFilament::build() optgroup->append_single_option_line("filament_multitool_ramming_volume"); optgroup->append_single_option_line("filament_multitool_ramming_flow"); - page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders - optgroup = page->new_optgroup(L("Notes"),"note", 0); - optgroup->label_width = 0; - option = optgroup->get_option("filament_notes"); - option.opt.full_width = true; - option.opt.height = notes_field_height;// 250; - optgroup->append_single_option_line(option); -#if 1 page = add_options_page(L("Dependencies"), "advanced"); optgroup = page->new_optgroup(L("Profile dependencies")); create_line_with_widget(optgroup.get(), "compatible_printers", "", [this](wxWindow* parent) { @@ -3553,8 +3543,15 @@ void TabFilament::build() option.opt.full_width = true; optgroup->append_single_option_line(option); + page = add_options_page(L("Notes"), "custom-gcode_note"); // ORCA: icon only visible on placeholders + optgroup = page->new_optgroup(L("Notes"),"note", 0); + optgroup->label_width = 0; + option = optgroup->get_option("filament_notes"); + option.opt.full_width = true; + option.opt.height = notes_field_height;// 250; + optgroup->append_single_option_line(option); + //build_preset_description_line(optgroup.get()); -#endif } // Reload current config (aka presets->edited_preset->config) into the UI fields. From 26a55a12678b184c0b50ff7902a46a6d8fd7238f Mon Sep 17 00:00:00 2001 From: SoftFever Date: Thu, 16 Jan 2025 19:25:43 +0800 Subject: [PATCH 3/8] Update profile valdiator --- src/OrcaSlicer_profile_validator.cpp | 2 ++ src/libslic3r/PresetBundle.cpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/src/OrcaSlicer_profile_validator.cpp b/src/OrcaSlicer_profile_validator.cpp index ba4e7ce687..84fe4c2037 100644 --- a/src/OrcaSlicer_profile_validator.cpp +++ b/src/OrcaSlicer_profile_validator.cpp @@ -147,6 +147,8 @@ int main(int argc, char* argv[]) std::cout << "Validation failed" << std::endl; return 1; } + // Report loaded presets + std::cout << "Total loaded vendors: " << preset_bundle->vendors.size() << std::endl; if (generate_user_preset) { generate_custom_presets(preset_bundle, app_config); diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 7fd5ff1ce2..0f6a4cc569 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -4215,6 +4215,9 @@ bool PresetBundle::has_errors() const for (auto& preset : filaments) { if (!preset.is_system) continue; + // It's per design that the Orca Filament Library can have the empty compatible_printers. + if(preset.vendor->name == PresetBundle::ORCA_FILAMENT_LIBRARY) + continue; auto* compatible_printers = dynamic_cast(preset.config.option("compatible_printers")); if (compatible_printers == nullptr || compatible_printers->values.empty()) { has_errors = true; From 7179797d5581e197ee1e404bd8c965c6d404dd99 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 19 Jan 2025 00:39:45 +0800 Subject: [PATCH 4/8] suport renamed_from --- src/libslic3r/Config.cpp | 5 +++-- src/libslic3r/Preset.cpp | 8 +++++++- src/libslic3r/Preset.hpp | 3 ++- src/libslic3r/PresetBundle.cpp | 10 +++++++--- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/libslic3r/Config.cpp b/src/libslic3r/Config.cpp index e826bb4c5b..57f51f0b23 100644 --- a/src/libslic3r/Config.cpp +++ b/src/libslic3r/Config.cpp @@ -839,8 +839,9 @@ int ConfigBase::load_from_json(const std::string &file, ConfigSubstitutionContex } else if (!load_inherits_to_config && boost::iequals(it.key(), BBL_JSON_KEY_INHERITS)) { key_values.emplace(BBL_JSON_KEY_INHERITS, it.value()); - } - else { + } else if (boost::iequals(it.key(), ORCA_JSON_KEY_RENAMED_FROM)) { + key_values.emplace(ORCA_JSON_KEY_RENAMED_FROM, it.value()); + } else { t_config_option_key opt_key = it.key(); std::string value_str; diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index b09171ee0e..102f02d0f9 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1137,7 +1137,7 @@ void PresetCollection::load_presets( if (key_values.find("instantiation") != key_values.end()) preset.is_visible = key_values["instantiation"] != "false"; - //BBS: use inherit config as the base + //Orca: find and use the inherit config as the base Preset* inherit_preset = nullptr; ConfigOption* inherits_config = config.option(BBL_JSON_KEY_INHERITS); @@ -1146,6 +1146,12 @@ void PresetCollection::load_presets( ConfigOptionString * option_str = dynamic_cast (inherits_config); std::string inherits_value = option_str->value; inherit_preset = this->find_preset(inherits_value, false, true); + // Orca: try to find if the parent preset has been renamed + if (inherit_preset == nullptr) { + auto it = this->find_preset_renamed(inherits_value); + if (it != m_presets.end()) + inherit_preset = &(*it); + } } else { ; } diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 145ae5b6f7..cf88071748 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -63,7 +63,8 @@ #define BBL_JSON_KEY_DEFAULT_MATERIALS "default_materials" #define BBL_JSON_KEY_MODEL_ID "model_id" -//BBL: json path +// Orca extension +#define ORCA_JSON_KEY_RENAMED_FROM "renamed_from" namespace Slic3r { diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index 0f6a4cc569..bb5a39271d 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -3533,6 +3533,7 @@ std::pair PresetBundle::load_vendor_configs_ //parse the json elements DynamicPrintConfig config_src; + std::string _renamed_from_str; config_src.load_from_json(subfile, substitution_context, false, key_values, reason); if (!reason.empty()) { ++m_errors; @@ -3586,9 +3587,12 @@ std::pair PresetBundle::load_vendor_configs_ } if (config.has("alias")) alias_name = (dynamic_cast(config.option("alias")))->value; - if (config.has("renamed_from")) { - const ConfigOptionVectorBase *vec = static_cast(config.option("renamed_from")); - renamed_from = vec->vserialize(); + + if (key_values.find(ORCA_JSON_KEY_RENAMED_FROM) != key_values.end()) { + if (!unescape_strings_cstyle(key_values[ORCA_JSON_KEY_RENAMED_FROM], renamed_from)) { + BOOST_LOG_TRIVIAL(error) << "Error in a Config \"" << path << "\": The preset \"" << preset_name + << "\" contains invalid \"renamed_from\" key, which is being ignored."; + } } Preset::normalize(config); } From 206c6228a540eb934ffbe9804a81581f2edbb785 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Sun, 19 Jan 2025 23:04:35 +0800 Subject: [PATCH 5/8] Fix renamed_from feature and others --- src/libslic3r/Preset.cpp | 11 ++++ src/libslic3r/Preset.hpp | 2 + src/libslic3r/PresetBundle.cpp | 30 +++++++-- src/libslic3r/PresetBundle.hpp | 11 +++- src/slic3r/GUI/WebGuideDialog.cpp | 106 ++++++++++-------------------- src/slic3r/GUI/WebGuideDialog.hpp | 2 + 6 files changed, 83 insertions(+), 79 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 102f02d0f9..a4394f624c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -2523,6 +2523,17 @@ Preset* PresetCollection::find_preset(const std::string &name, bool first_visibl first_visible_if_not_found ? &this->first_visible() : nullptr; } +const Preset* PresetCollection::find_preset2(const std::string& name) const +{ + auto preset = const_cast(this)->find_preset(name, false, true); + if (preset == nullptr) { + auto _name = get_preset_name_renamed(name); + if(_name != nullptr) + preset = const_cast(this)->find_preset(*_name, false, true); + } + return preset; +} + // Return index of the first visible preset. Certainly at least the '- default -' preset shall be visible. size_t PresetCollection::first_visible_idx() const { diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index cf88071748..359abf6d62 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -596,6 +596,8 @@ public: Preset* find_preset(const std::string &name, bool first_visible_if_not_found = false, bool real = false); const Preset* find_preset(const std::string &name, bool first_visible_if_not_found = false) const { return const_cast(this)->find_preset(name, first_visible_if_not_found); } + // Orca: find preset, if not found, keep searching in the renamed history + const Preset* find_preset2(const std::string &name) const; size_t first_visible_idx() const; // Return index of the first compatible preset. Certainly at least the '- default -' preset shall be compatible. diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index bb5a39271d..f8103ff4fe 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1,6 +1,7 @@ #include #include "PresetBundle.hpp" +#include "PrintConfig.hpp" #include "libslic3r.h" #include "Utils.hpp" #include "Model.hpp" @@ -1281,7 +1282,7 @@ std::pair PresetBundle::load_system_pre // Load the other vendor configs, merge them with this PresetBundle. // Report duplicate profiles. PresetBundle other; - append(substitutions, other.load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem, compatibility_rule).first); + append(substitutions, other.load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem, compatibility_rule, this).first); std::vector duplicates = this->merge_presets(std::move(other)); if (! duplicates.empty()) { errors_cummulative += "Found duplicated settings in vendor " + vendor_name + "'s json file lists: "; @@ -3300,7 +3301,7 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool //BBS: Load a config bundle file from json std::pair PresetBundle::load_vendor_configs_from_json( - const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule) + const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle) { // Enable substitutions for user config bundle, throw an exception when loading a system profile. ConfigSubstitutionContext substitution_context { compatibility_rule }; @@ -3509,7 +3510,7 @@ std::pair PresetBundle::load_vendor_configs_ PresetCollection *presets = nullptr; size_t presets_loaded = 0; - auto parse_subfile = [this, path, vendor_name, presets_loaded, current_vendor_profile]( + auto parse_subfile = [this, path, vendor_name, presets_loaded, current_vendor_profile, base_bundle]( ConfigSubstitutionContext& substitution_context, PresetsConfigSubstitutions& substitutions, LoadConfigBundleAttributes& flags, @@ -3554,19 +3555,32 @@ std::pair PresetBundle::load_vendor_configs_ if (it1 != key_values.end()) { inherits = it1->second; auto it2 = config_maps.find(inherits); - if (it2 != config_maps.end()) { + default_config = nullptr; + if (it2 != config_maps.end()) default_config = &(it2->second); + if(default_config == nullptr && base_bundle != nullptr) { + auto base_it2 = base_bundle->m_config_maps.find(inherits); + if (base_it2 != base_bundle->m_config_maps.end()) + default_config = &(base_it2->second); + } + if (default_config != nullptr) { if (filament_id.empty() && (presets_collection->type() == Preset::TYPE_FILAMENT)) { auto filament_id_map_iter = filament_id_maps.find(inherits); if (filament_id_map_iter != filament_id_maps.end()) { filament_id = filament_id_map_iter->second; } + if (filament_id.empty() && base_bundle != nullptr) { + auto filament_id_map_iter = base_bundle->m_filament_id_maps.find(inherits); + if (filament_id_map_iter != base_bundle->m_filament_id_maps.end()) { + filament_id = filament_id_map_iter->second; + } + } } } else { ++m_errors; - BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": can not find inherits "< PresetBundle::load_vendor_configs_ throw ConfigurationError((boost::format("Failed loading configuration file %1%\nSuggest cleaning the directory %2% firstly") % subfile_path % path).str()); } } + if (vendor_name == ORCA_FILAMENT_LIBRARY) { + m_config_maps = configs; + m_filament_id_maps = filament_id_maps; + } //3.3) paste the printers presets = &this->printers; diff --git a/src/libslic3r/PresetBundle.hpp b/src/libslic3r/PresetBundle.hpp index 50592876e0..58b5941168 100644 --- a/src/libslic3r/PresetBundle.hpp +++ b/src/libslic3r/PresetBundle.hpp @@ -160,7 +160,12 @@ public: // and the system profiles will point to the VendorProfile instances owned by PresetBundle::vendors. VendorMap vendors; - struct ObsoletePresets { + // Orca: for OrcaFilamentLibrary + std::map m_config_maps; + std::map m_filament_id_maps; + + struct ObsoletePresets + { std::vector prints; std::vector sla_prints; std::vector filaments; @@ -212,9 +217,9 @@ public: // Don't do any config substitutions when loading a system profile, perform and report substitutions otherwise. /*std::pair load_configbundle( const std::string &path, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule);*/ - //BBS: add json related logic + //Orca: load config bundle from json, pass the base bundle to support cross vendor inheritance std::pair load_vendor_configs_from_json( - const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule); + const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle = nullptr); // Export a config bundle file containing all the presets and the names of the active presets. //void export_configbundle(const std::string &path, bool export_system_settings = false, bool export_physical_printers = false); diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index 48315505bd..db0451c475 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -1,9 +1,13 @@ #include "WebGuideDialog.hpp" #include "ConfigWizard.hpp" +#include +#include +#include #include #include "I18N.hpp" #include "libslic3r/AppConfig.hpp" +#include "libslic3r/PresetBundle.hpp" #include "slic3r/GUI/wxExtensions.hpp" #include "slic3r/GUI/GUI_App.hpp" #include "libslic3r_version.h" @@ -1066,31 +1070,7 @@ int GuideFrame::GetFilamentInfo( std::string VendorDirectory, json & pFilaList, int GuideFrame::LoadProfile() { try { - //wxString ExePath = boost::dll::program_location().parent_path().string(); - //wxString TargetFolder = ExePath + "\\resources\\profiles\\"; - //wxString TargetFolderSearch = ExePath + "\\resources\\profiles\\*.json"; - - //intptr_t handle; - //_finddata_t findData; - - //handle = _findfirst(TargetFolderSearch.mb_str(), &findData); // ??????????? - //if (handle == -1) { return -1; } - - //do { - // if (findData.attrib & _A_SUBDIR && strcmp(findData.name, ".") == 0 && strcmp(findData.name, "..") == 0) // ??????????"."?".." - // { - // // cout << findData.name << "\t\n"; - // } else { - // wxString strVendor = wxString(findData.name).BeforeLast('.'); - // LoadProfileFamily(strVendor, TargetFolder + findData.name); - // } - - //} while (_findnext(handle, &findData) == 0); // ??????????? - - // BBS: change directories by design - //BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", will load config from %1%.") % bbl_bundle_path; m_ProfileJson = json::parse("{}"); - //m_ProfileJson["configpath"] = Slic3r::data_dir(); m_ProfileJson["model"] = json::array(); m_ProfileJson["machine"] = json::object(); m_ProfileJson["filament"] = json::object(); @@ -1101,74 +1081,58 @@ int GuideFrame::LoadProfile() // Orca: add custom as default // Orca: add json logic for vendor bundle - auto orca_custom_bundle_path = vendor_dir; - orca_bundle_rsrc = false; - if (!boost::filesystem::exists((vendor_dir / PresetBundle::ORCA_DEFAULT_BUNDLE).replace_extension(".json"))) { - orca_custom_bundle_path = rsrc_vendor_dir; - orca_bundle_rsrc = true; + orca_bundle_rsrc = true; + + // search if there exists a .json file in vendor_dir folder, if exists, set orca_bundle_rsrc to false + for (const auto& entry : boost::filesystem::directory_iterator(vendor_dir)) { + if (!boost::filesystem::is_directory(entry) && boost::iequals(entry.path().extension().string(), ".json") && !boost::iequals(entry.path().stem().string(), PresetBundle::ORCA_FILAMENT_LIBRARY)) { + orca_bundle_rsrc = false; + break; + } } - // intptr_t handle; - //_finddata_t findData; - - //handle = _findfirst((bbl_bundle_path / "*.json").make_preferred().string().c_str(), &findData); // ??????????? - // if (handle == -1) { return -1; } - - // do { - // if (findData.attrib & _A_SUBDIR && strcmp(findData.name, ".") == 0 && strcmp(findData.name, "..") == 0) // ??????????"."?".." - // { - // // cout << findData.name << "\t\n"; - // } else { - // wxString strVendor = wxString(findData.name).BeforeLast('.'); - // LoadProfileFamily(w2s(strVendor), vendor_dir.make_preferred().string() + "\\"+ findData.name); - // } - - //} while (_findnext(handle, &findData) == 0); // ??????????? - + // load the default filament library first + std::set loaded_vendors; + auto filament_library_name = boost::filesystem::path(PresetBundle::ORCA_FILAMENT_LIBRARY).replace_extension(".json"); + if (boost::filesystem::exists(vendor_dir / filament_library_name)) { + LoadProfileFamily(PresetBundle::ORCA_FILAMENT_LIBRARY, (vendor_dir / filament_library_name).string()); + } else { + LoadProfileFamily(PresetBundle::ORCA_FILAMENT_LIBRARY, (rsrc_vendor_dir / filament_library_name).string()); + } + loaded_vendors.insert(PresetBundle::ORCA_FILAMENT_LIBRARY); //load custom bundle from user data path - string targetPath = orca_custom_bundle_path.make_preferred().string(); - boost::filesystem::path myPath(targetPath); boost::filesystem::directory_iterator endIter; - for (boost::filesystem::directory_iterator iter(myPath); iter != endIter; iter++) { - if (boost::filesystem::is_directory(*iter)) { - //cout << "is dir" << endl; - //cout << iter->path().string() << endl; - } else { - //cout << "is a file" << endl; - //cout << iter->path().string() << endl; - + for (boost::filesystem::directory_iterator iter(vendor_dir); iter != endIter; iter++) { + if (!boost::filesystem::is_directory(*iter)) { wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast('\\'); strVendor = strVendor.AfterLast('/'); - wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); - if ((w2s(strVendor) == PresetBundle::ORCA_DEFAULT_BUNDLE || w2s(strVendor) == PresetBundle::ORCA_FILAMENT_LIBRARY) && strExtension.CmpNoCase("json") == 0) - LoadProfileFamily(w2s(strVendor), iter->path().string()); + wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); + if(strExtension.CmpNoCase("json") != 0 || loaded_vendors.find(w2s(strVendor)) != loaded_vendors.end()) + continue; + + LoadProfileFamily(w2s(strVendor), iter->path().string()); + loaded_vendors.insert(w2s(strVendor)); } } - //string others_targetPath = rsrc_vendor_dir.string(); boost::filesystem::directory_iterator others_endIter; for (boost::filesystem::directory_iterator iter(rsrc_vendor_dir); iter != others_endIter; iter++) { - if (boost::filesystem::is_directory(*iter)) { - //cout << "is dir" << endl; - //cout << iter->path().string() << endl; - } else { - //cout << "is a file" << endl; - //cout << iter->path().string() << endl; + if (!boost::filesystem::is_directory(*iter)) { wxString strVendor = from_u8(iter->path().string()).BeforeLast('.'); strVendor = strVendor.AfterLast('\\'); strVendor = strVendor.AfterLast('/'); wxString strExtension = from_u8(iter->path().string()).AfterLast('.').Lower(); + if (strExtension.CmpNoCase("json") != 0 || loaded_vendors.find(w2s(strVendor)) != loaded_vendors.end()) + continue; - if (w2s(strVendor) != PresetBundle::ORCA_DEFAULT_BUNDLE && w2s(strVendor) != PresetBundle::ORCA_FILAMENT_LIBRARY && strExtension.CmpNoCase("json")==0) - LoadProfileFamily(w2s(strVendor), iter->path().string()); + LoadProfileFamily(w2s(strVendor), iter->path().string()); } } - //LoadProfileFamily(PresetBundle::ORCA_DEFAULT_BUNDLE, bbl_bundle_path.string()); const auto enabled_filaments = wxGetApp().app_config->has_section(AppConfig::SECTION_FILAMENTS) ? wxGetApp().app_config->get_section(AppConfig::SECTION_FILAMENTS) : std::map(); m_appconfig_new.set_vendors(*wxGetApp().app_config); @@ -1531,7 +1495,7 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath // BBS:Filament json pFilament = jLocal["filament_list"]; - json tFilaList = json::object(); + json tFilaList = m_OrcaFilaList; nsize = pFilament.size(); for (int n = 0; n < nsize; n++) { @@ -1604,6 +1568,8 @@ int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath } } + if(strVendor == PresetBundle::ORCA_FILAMENT_LIBRARY) + m_OrcaFilaList = tFilaList; // process json pProcess = jLocal["process_list"]; diff --git a/src/slic3r/GUI/WebGuideDialog.hpp b/src/slic3r/GUI/WebGuideDialog.hpp index 98ce915f51..03f2e752b4 100644 --- a/src/slic3r/GUI/WebGuideDialog.hpp +++ b/src/slic3r/GUI/WebGuideDialog.hpp @@ -115,6 +115,8 @@ private: bool InstallNetplugin; bool network_plugin_ready {false}; + json m_OrcaFilaList; + #if wxUSE_WEBVIEW_IE wxMenuItem *m_script_object_el; wxMenuItem *m_script_date_el; From d1bc4e1e9f922c7820bbc229c5dc353f210e4bb9 Mon Sep 17 00:00:00 2001 From: SoftFever Date: Wed, 22 Jan 2025 21:29:24 +0800 Subject: [PATCH 6/8] Allow each vendor's filament profile inherit from OrcaFilamentLibrary and many many fixes... --- resources/profiles/Custom.json | 118 +-- ...r.json => Generic ABS @MyToolChanger.json} | 5 +- ...r.json => Generic ASA @MyToolChanger.json} | 5 +- ...er.json => Generic PA @MyToolChanger.json} | 5 +- ...json => Generic PA-CF @MyToolChanger.json} | 5 +- ...er.json => Generic PC @MyToolChanger.json} | 5 +- ....json => Generic PETG @MyToolChanger.json} | 5 +- ...r.json => Generic PLA @MyToolChanger.json} | 5 +- ...son => Generic PLA-CF @MyToolChanger.json} | 5 +- ...r.json => Generic PVA @MyToolChanger.json} | 5 +- ...r.json => Generic TPU @MyToolChanger.json} | 5 +- .../Custom/filament/My Generic ABS.json | 23 - .../Custom/filament/My Generic ASA.json | 23 - .../Custom/filament/My Generic PA-CF.json | 29 - .../Custom/filament/My Generic PA.json | 26 - .../Custom/filament/My Generic PC.json | 23 - .../Custom/filament/My Generic PETG.json | 53 -- .../Custom/filament/My Generic PLA-CF.json | 29 - .../Custom/filament/My Generic PLA.json | 26 - .../Custom/filament/My Generic PVA.json | 29 - .../Custom/filament/My Generic TPU.json | 20 - .../Custom/filament/fdm_filament_abs.json | 88 -- .../Custom/filament/fdm_filament_asa.json | 88 -- .../Custom/filament/fdm_filament_common.json | 144 --- .../Custom/filament/fdm_filament_pa.json | 85 -- .../Custom/filament/fdm_filament_pc.json | 88 -- .../Custom/filament/fdm_filament_pet.json | 82 -- .../Custom/filament/fdm_filament_pla.json | 94 -- .../Custom/filament/fdm_filament_pva.json | 100 -- .../Custom/filament/fdm_filament_tpu.json | 88 -- .../profiles/Custom/machine/MyKlipper.json | 2 +- .../profiles/Custom/machine/MyMarlin.json | 2 +- resources/profiles/Custom/machine/MyRRF.json | 4 +- .../Custom/machine/MyToolChanger.json | 2 +- resources/profiles/OrcaFilamentLibrary.json | 40 +- .../{ABS.json => Generic ABS @System.json} | 12 +- .../{ASA.json => Generic ASA @System.json} | 12 +- .../filament/Generic PA @System.json | 11 + .../filament/Generic PA-CF @System.json | 14 + .../{PC.json => Generic PC @System.json} | 13 +- .../filament/Generic PETG @System.json | 11 + .../filament/Generic PLA @System.json | 11 + ...LA-CF.json => Generic PLA-CF @System.json} | 13 +- .../filament/Generic PVA @System.json | 11 + .../{TPU.json => Generic TPU @System.json} | 10 +- .../OrcaFilamentLibrary/filament/PA-CF.json | 23 - .../OrcaFilamentLibrary/filament/PA.json | 21 - .../OrcaFilamentLibrary/filament/PETG.json | 48 - .../OrcaFilamentLibrary/filament/PLA.json | 20 - .../OrcaFilamentLibrary/filament/PVA.json | 24 - .../filament/fdm_filament_abs.json | 27 +- .../filament/fdm_filament_asa.json | 9 +- .../filament/fdm_filament_common.json | 2 +- .../filament/fdm_filament_pa.json | 18 +- .../filament/fdm_filament_pc.json | 9 +- .../filament/fdm_filament_pet.json | 54 +- .../filament/fdm_filament_pla.json | 33 +- .../filament/fdm_filament_pva.json | 39 +- .../filament/fdm_filament_tpu.json | 24 +- .../Prusa/process/0.20mm Speed @MK3S 0.4.json | 1 - resources/web/guide/22/22.js | 6 +- resources/web/guide/23/23.js | 39 +- src/libslic3r/Preset.cpp | 51 +- src/libslic3r/Preset.hpp | 10 + src/libslic3r/PresetBundle.cpp | 853 +----------------- src/slic3r/GUI/WebGuideDialog.cpp | 280 +----- src/slic3r/GUI/WebGuideDialog.hpp | 1 + 67 files changed, 350 insertions(+), 2716 deletions(-) rename resources/profiles/Custom/filament/{My Generic ABS @MyToolChanger.json => Generic ABS @MyToolChanger.json} (89%) rename resources/profiles/Custom/filament/{My Generic ASA @MyToolChanger.json => Generic ASA @MyToolChanger.json} (89%) rename resources/profiles/Custom/filament/{My Generic PA @MyToolChanger.json => Generic PA @MyToolChanger.json} (89%) rename resources/profiles/Custom/filament/{My Generic PA-CF @MyToolChanger.json => Generic PA-CF @MyToolChanger.json} (89%) rename resources/profiles/Custom/filament/{My Generic PC @MyToolChanger.json => Generic PC @MyToolChanger.json} (89%) rename resources/profiles/Custom/filament/{My Generic PETG @MyToolChanger.json => Generic PETG @MyToolChanger.json} (92%) rename resources/profiles/Custom/filament/{My Generic PLA @MyToolChanger.json => Generic PLA @MyToolChanger.json} (89%) rename resources/profiles/Custom/filament/{My Generic PLA-CF @MyToolChanger.json => Generic PLA-CF @MyToolChanger.json} (89%) rename resources/profiles/Custom/filament/{My Generic PVA @MyToolChanger.json => Generic PVA @MyToolChanger.json} (79%) rename resources/profiles/Custom/filament/{My Generic TPU @MyToolChanger.json => Generic TPU @MyToolChanger.json} (73%) delete mode 100644 resources/profiles/Custom/filament/My Generic ABS.json delete mode 100644 resources/profiles/Custom/filament/My Generic ASA.json delete mode 100644 resources/profiles/Custom/filament/My Generic PA-CF.json delete mode 100644 resources/profiles/Custom/filament/My Generic PA.json delete mode 100644 resources/profiles/Custom/filament/My Generic PC.json delete mode 100644 resources/profiles/Custom/filament/My Generic PETG.json delete mode 100644 resources/profiles/Custom/filament/My Generic PLA-CF.json delete mode 100644 resources/profiles/Custom/filament/My Generic PLA.json delete mode 100644 resources/profiles/Custom/filament/My Generic PVA.json delete mode 100644 resources/profiles/Custom/filament/My Generic TPU.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_abs.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_asa.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_common.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_pa.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_pc.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_pet.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_pla.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_pva.json delete mode 100644 resources/profiles/Custom/filament/fdm_filament_tpu.json rename resources/profiles/OrcaFilamentLibrary/filament/{ABS.json => Generic ABS @System.json} (50%) rename resources/profiles/OrcaFilamentLibrary/filament/{ASA.json => Generic ASA @System.json} (50%) create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json rename resources/profiles/OrcaFilamentLibrary/filament/{PC.json => Generic PC @System.json} (50%) create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json rename resources/profiles/OrcaFilamentLibrary/filament/{PLA-CF.json => Generic PLA-CF @System.json} (61%) create mode 100644 resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json rename resources/profiles/OrcaFilamentLibrary/filament/{TPU.json => Generic TPU @System.json} (59%) delete mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json delete mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PA.json delete mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PETG.json delete mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PLA.json delete mode 100644 resources/profiles/OrcaFilamentLibrary/filament/PVA.json diff --git a/resources/profiles/Custom.json b/resources/profiles/Custom.json index 5141e5f323..eea4025908 100644 --- a/resources/profiles/Custom.json +++ b/resources/profiles/Custom.json @@ -1,6 +1,6 @@ { "name": "Custom Printer", - "version": "02.02.00.04", + "version": "02.02.00.05", "force_update": "0", "description": "My configurations", "machine_model_list": [ @@ -173,120 +173,44 @@ ], "filament_list": [ { - "name": "fdm_filament_common", - "sub_path": "filament/fdm_filament_common.json" + "name": "Generic PLA @MyToolChanger", + "sub_path": "filament/Generic PLA @MyToolChanger.json" }, { - "name": "fdm_filament_pla", - "sub_path": "filament/fdm_filament_pla.json" + "name": "Generic PLA-CF @MyToolChanger", + "sub_path": "filament/Generic PLA-CF @MyToolChanger.json" }, { - "name": "fdm_filament_tpu", - "sub_path": "filament/fdm_filament_tpu.json" + "name": "Generic PETG @MyToolChanger", + "sub_path": "filament/Generic PETG @MyToolChanger.json" }, { - "name": "fdm_filament_pet", - "sub_path": "filament/fdm_filament_pet.json" + "name": "Generic ABS @MyToolChanger", + "sub_path": "filament/Generic ABS @MyToolChanger.json" }, { - "name": "fdm_filament_abs", - "sub_path": "filament/fdm_filament_abs.json" + "name": "Generic TPU @MyToolChanger", + "sub_path": "filament/Generic TPU @MyToolChanger.json" }, { - "name": "fdm_filament_pc", - "sub_path": "filament/fdm_filament_pc.json" + "name": "Generic ASA @MyToolChanger", + "sub_path": "filament/Generic ASA @MyToolChanger.json" }, { - "name": "fdm_filament_asa", - "sub_path": "filament/fdm_filament_asa.json" + "name": "Generic PC @MyToolChanger", + "sub_path": "filament/Generic PC @MyToolChanger.json" }, { - "name": "fdm_filament_pva", - "sub_path": "filament/fdm_filament_pva.json" + "name": "Generic PVA @MyToolChanger", + "sub_path": "filament/Generic PVA @MyToolChanger.json" }, { - "name": "fdm_filament_pa", - "sub_path": "filament/fdm_filament_pa.json" + "name": "Generic PA @MyToolChanger", + "sub_path": "filament/Generic PA @MyToolChanger.json" }, { - "name": "My Generic PLA", - "sub_path": "filament/My Generic PLA.json" - }, - { - "name": "My Generic PLA-CF", - "sub_path": "filament/My Generic PLA-CF.json" - }, - { - "name": "My Generic PETG", - "sub_path": "filament/My Generic PETG.json" - }, - { - "name": "My Generic ABS", - "sub_path": "filament/My Generic ABS.json" - }, - { - "name": "My Generic TPU", - "sub_path": "filament/My Generic TPU.json" - }, - { - "name": "My Generic ASA", - "sub_path": "filament/My Generic ASA.json" - }, - { - "name": "My Generic PC", - "sub_path": "filament/My Generic PC.json" - }, - { - "name": "My Generic PVA", - "sub_path": "filament/My Generic PVA.json" - }, - { - "name": "My Generic PA", - "sub_path": "filament/My Generic PA.json" - }, - { - "name": "My Generic PA-CF", - "sub_path": "filament/My Generic PA-CF.json" - }, - { - "name": "My Generic PLA @MyToolChanger", - "sub_path": "filament/My Generic PLA @MyToolChanger.json" - }, - { - "name": "My Generic PLA-CF @MyToolChanger", - "sub_path": "filament/My Generic PLA-CF @MyToolChanger.json" - }, - { - "name": "My Generic PETG @MyToolChanger", - "sub_path": "filament/My Generic PETG @MyToolChanger.json" - }, - { - "name": "My Generic ABS @MyToolChanger", - "sub_path": "filament/My Generic ABS @MyToolChanger.json" - }, - { - "name": "My Generic TPU @MyToolChanger", - "sub_path": "filament/My Generic TPU @MyToolChanger.json" - }, - { - "name": "My Generic ASA @MyToolChanger", - "sub_path": "filament/My Generic ASA @MyToolChanger.json" - }, - { - "name": "My Generic PC @MyToolChanger", - "sub_path": "filament/My Generic PC @MyToolChanger.json" - }, - { - "name": "My Generic PVA @MyToolChanger", - "sub_path": "filament/My Generic PVA @MyToolChanger.json" - }, - { - "name": "My Generic PA @MyToolChanger", - "sub_path": "filament/My Generic PA @MyToolChanger.json" - }, - { - "name": "My Generic PA-CF @MyToolChanger", - "sub_path": "filament/My Generic PA-CF @MyToolChanger.json" + "name": "Generic PA-CF @MyToolChanger", + "sub_path": "filament/Generic PA-CF @MyToolChanger.json" } ], "machine_list": [ diff --git a/resources/profiles/Custom/filament/My Generic ABS @MyToolChanger.json b/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json similarity index 89% rename from resources/profiles/Custom/filament/My Generic ABS @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json index fb8f51bf95..d1eb791459 100644 --- a/resources/profiles/Custom/filament/My Generic ABS @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFB99", "setting_id": "GFB99_MTC_0", - "name": "My Generic ABS @MyToolChanger", + "name": "Generic ABS @MyToolChanger", + "renamed_from": "My Generic ABS @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_abs", + "inherits": "Generic ABS @System", "filament_flow_ratio": [ "0.926" ], diff --git a/resources/profiles/Custom/filament/My Generic ASA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json similarity index 89% rename from resources/profiles/Custom/filament/My Generic ASA @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json index 05bab114b4..fa45cde5db 100644 --- a/resources/profiles/Custom/filament/My Generic ASA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFB98", "setting_id": "GFB98_MTC_0", - "name": "My Generic ASA @MyToolChanger", + "name": "Generic ASA @MyToolChanger", + "renamed_from": "My Generic ASA @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_asa", + "inherits": "Generic ASA @System", "filament_flow_ratio": [ "0.93" ], diff --git a/resources/profiles/Custom/filament/My Generic PA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json similarity index 89% rename from resources/profiles/Custom/filament/My Generic PA @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic PA @MyToolChanger.json index 17a9b793cc..66ac2ff73c 100644 --- a/resources/profiles/Custom/filament/My Generic PA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFN99", "setting_id": "GFN99_MTC_0", - "name": "My Generic PA @MyToolChanger", + "name": "Generic PA @MyToolChanger", + "renamed_from": "My Generic PA @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pa", + "inherits": "Generic PA @System", "nozzle_temperature_initial_layer": [ "280" ], diff --git a/resources/profiles/Custom/filament/My Generic PA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json similarity index 89% rename from resources/profiles/Custom/filament/My Generic PA-CF @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json index 0b0f065eed..78f2ae0202 100644 --- a/resources/profiles/Custom/filament/My Generic PA-CF @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFN98", "setting_id": "GFN98_MTC_0", - "name": "My Generic PA-CF @MyToolChanger", + "name": "Generic PA-CF @MyToolChanger", + "renamed_from": "My Generic PA-CF @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pa", + "inherits": "Generic PA-CF @System", "filament_type": [ "PA-CF" ], diff --git a/resources/profiles/Custom/filament/My Generic PC @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json similarity index 89% rename from resources/profiles/Custom/filament/My Generic PC @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic PC @MyToolChanger.json index 7ae24c6774..b3fa761a1e 100644 --- a/resources/profiles/Custom/filament/My Generic PC @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFC99", "setting_id": "GFC99_MTC_0", - "name": "My Generic PC @MyToolChanger", + "name": "Generic PC @MyToolChanger", + "renamed_from": "My Generic PC @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pc", + "inherits": "Generic PC @System", "filament_max_volumetric_speed": [ "12" ], diff --git a/resources/profiles/Custom/filament/My Generic PETG @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json similarity index 92% rename from resources/profiles/Custom/filament/My Generic PETG @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json index f9cb2e0b16..1b4e8de6b0 100644 --- a/resources/profiles/Custom/filament/My Generic PETG @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFG99", "setting_id": "GFG99_MTC_0", - "name": "My Generic PETG @MyToolChanger", + "name": "Generic PETG @MyToolChanger", + "renamed_from": "My Generic PETG @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pet", + "inherits": "Generic PETG @System", "reduce_fan_stop_start_freq": [ "1" ], diff --git a/resources/profiles/Custom/filament/My Generic PLA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json similarity index 89% rename from resources/profiles/Custom/filament/My Generic PLA @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json index facaf08984..91e1ac329a 100644 --- a/resources/profiles/Custom/filament/My Generic PLA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFL99", "setting_id": "GFL99_MTC_0", - "name": "My Generic PLA @MyToolChanger", + "name": "Generic PLA @MyToolChanger", + "renamed_from": "My Generic PLA @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pla", + "inherits": "Generic PLA @System", "filament_flow_ratio": [ "0.98" ], diff --git a/resources/profiles/Custom/filament/My Generic PLA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json similarity index 89% rename from resources/profiles/Custom/filament/My Generic PLA-CF @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json index 8adf8d53d2..5600c63fa1 100644 --- a/resources/profiles/Custom/filament/My Generic PLA-CF @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFL98", "setting_id": "GFL98_MTC_0", - "name": "My Generic PLA-CF @MyToolChanger", + "name": "Generic PLA-CF @MyToolChanger", + "renamed_from": "My Generic PLA-CF @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pla", + "inherits": "Generic PLA-CF @System", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/Custom/filament/My Generic PVA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json similarity index 79% rename from resources/profiles/Custom/filament/My Generic PVA @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json index a2dd357753..fd1f0bec80 100644 --- a/resources/profiles/Custom/filament/My Generic PVA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFS99", "setting_id": "GFS99_MTC_0", - "name": "My Generic PVA @MyToolChanger", + "name": "Generic PVA @MyToolChanger", + "renamed_from": "My Generic PVA @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_pva", + "inherits": "Generic PVA @System", "filament_flow_ratio": [ "0.95" ], diff --git a/resources/profiles/Custom/filament/My Generic TPU @MyToolChanger.json b/resources/profiles/Custom/filament/Generic TPU @MyToolChanger.json similarity index 73% rename from resources/profiles/Custom/filament/My Generic TPU @MyToolChanger.json rename to resources/profiles/Custom/filament/Generic TPU @MyToolChanger.json index 54c4a15a19..1f207dc2f1 100644 --- a/resources/profiles/Custom/filament/My Generic TPU @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic TPU @MyToolChanger.json @@ -2,10 +2,11 @@ "type": "filament", "filament_id": "GFU99", "setting_id": "GFU99_MTC_0", - "name": "My Generic TPU @MyToolChanger", + "name": "Generic TPU @MyToolChanger", + "renamed_from": "My Generic TPU @MyToolChanger", "from": "system", "instantiation": "true", - "inherits": "fdm_filament_tpu", + "inherits": "Generic TPU @System", "filament_max_volumetric_speed": [ "3.2" ], diff --git a/resources/profiles/Custom/filament/My Generic ABS.json b/resources/profiles/Custom/filament/My Generic ABS.json deleted file mode 100644 index 14fe0490e5..0000000000 --- a/resources/profiles/Custom/filament/My Generic ABS.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFB99", - "setting_id": "GFSA04", - "name": "My Generic ABS", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.926" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic ASA.json b/resources/profiles/Custom/filament/My Generic ASA.json deleted file mode 100644 index ca6539c115..0000000000 --- a/resources/profiles/Custom/filament/My Generic ASA.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFB98", - "setting_id": "GFSA04", - "name": "My Generic ASA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_asa", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PA-CF.json b/resources/profiles/Custom/filament/My Generic PA-CF.json deleted file mode 100644 index 60efac620c..0000000000 --- a/resources/profiles/Custom/filament/My Generic PA-CF.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFN98", - "setting_id": "GFSA04", - "name": "My Generic PA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "filament_type": [ - "PA-CF" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PA.json b/resources/profiles/Custom/filament/My Generic PA.json deleted file mode 100644 index 2e284b6d37..0000000000 --- a/resources/profiles/Custom/filament/My Generic PA.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFN99", - "setting_id": "GFSA04", - "name": "My Generic PA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PC.json b/resources/profiles/Custom/filament/My Generic PC.json deleted file mode 100644 index 4738b42e18..0000000000 --- a/resources/profiles/Custom/filament/My Generic PC.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFC99", - "setting_id": "GFSA04", - "name": "My Generic PC", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pc", - "filament_max_volumetric_speed": [ - "12" - ], - "filament_flow_ratio": [ - "0.94" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PETG.json b/resources/profiles/Custom/filament/My Generic PETG.json deleted file mode 100644 index f640aea59e..0000000000 --- a/resources/profiles/Custom/filament/My Generic PETG.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFG99", - "setting_id": "GFSA04", - "name": "My Generic PETG", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_cooling_layer_time": [ - "30" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PLA-CF.json b/resources/profiles/Custom/filament/My Generic PLA-CF.json deleted file mode 100644 index b0ed43b93c..0000000000 --- a/resources/profiles/Custom/filament/My Generic PLA-CF.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFL98", - "setting_id": "GFSA04", - "name": "My Generic PLA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.95" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PLA.json b/resources/profiles/Custom/filament/My Generic PLA.json deleted file mode 100644 index 54dc3dc779..0000000000 --- a/resources/profiles/Custom/filament/My Generic PLA.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFL99", - "setting_id": "GFSA04", - "name": "My Generic PLA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "8" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic PVA.json b/resources/profiles/Custom/filament/My Generic PVA.json deleted file mode 100644 index ba874665cb..0000000000 --- a/resources/profiles/Custom/filament/My Generic PVA.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFS99", - "setting_id": "GFSA04", - "name": "My Generic PVA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pva", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], - "slow_down_min_speed": [ - "10" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/My Generic TPU.json b/resources/profiles/Custom/filament/My Generic TPU.json deleted file mode 100644 index 359d3da7a7..0000000000 --- a/resources/profiles/Custom/filament/My Generic TPU.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFU99", - "setting_id": "GFSA04", - "name": "My Generic TPU", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_tpu", - "filament_max_volumetric_speed": [ - "3.2" - ], - "compatible_printers": [ - "MyKlipper 0.4 nozzle", - "MyKlipper 0.2 nozzle", - "MyKlipper 0.6 nozzle", - "MyKlipper 0.8 nozzle", - "MyMarlin 0.4 nozzle", - "MyRRF 0.4 nozzle" - ] -} \ No newline at end of file diff --git a/resources/profiles/Custom/filament/fdm_filament_abs.json b/resources/profiles/Custom/filament/fdm_filament_abs.json deleted file mode 100644 index b9d4eeda31..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_abs.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_abs", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "textured_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "textured_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ABS" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_asa.json b/resources/profiles/Custom/filament/fdm_filament_asa.json deleted file mode 100644 index 262c561bda..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_asa.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_asa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "105" - ], - "eng_plate_temp" : [ - "105" - ], - "hot_plate_temp" : [ - "105" - ], - "textured_plate_temp" : [ - "105" - ], - "cool_plate_temp_initial_layer" : [ - "105" - ], - "eng_plate_temp_initial_layer" : [ - "105" - ], - "hot_plate_temp_initial_layer" : [ - "105" - ], - "textured_plate_temp_initial_layer" : [ - "105" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "35" - ], - "filament_max_volumetric_speed": [ - "28.6" - ], - "filament_type": [ - "ASA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "260" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "80" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "80" - ], - "nozzle_temperature": [ - "260" - ], - "temperature_vitrification": [ - "110" - ], - "nozzle_temperature_range_low": [ - "240" - ], - "nozzle_temperature_range_high": [ - "270" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "3" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_common.json b/resources/profiles/Custom/filament/fdm_filament_common.json deleted file mode 100644 index 9f77975119..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_common.json +++ /dev/null @@ -1,144 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_common", - "from": "system", - "instantiation": "false", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "textured_plate_temp_initial_layer" : [ - "60" - ], - "overhang_fan_threshold": [ - "95%" - ], - "overhang_fan_speed": [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "filament_end_gcode": [ - "; filament end gcode \n" - ], - "filament_flow_ratio": [ - "1" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_cooling_layer_time": [ - "60" - ], - "filament_cost": [ - "0" - ], - "filament_density": [ - "0" - ], - "filament_deretraction_speed": [ - "nil" - ], - "filament_diameter": [ - "1.75" - ], - "filament_max_volumetric_speed": [ - "0" - ], - "filament_minimal_purge_on_wipe_tower": [ - "15" - ], - "filament_retraction_minimum_travel": [ - "nil" - ], - "filament_retract_before_wipe": [ - "nil" - ], - "filament_retract_when_changing_layer": [ - "nil" - ], - "filament_retraction_length": [ - "nil" - ], - "filament_z_hop": [ - "nil" - ], - "filament_z_hop_types": [ - "nil" - ], - "filament_retract_restart_extra": [ - "nil" - ], - "filament_retraction_speed": [ - "nil" - ], - "filament_settings_id": [ - "" - ], - "filament_soluble": [ - "0" - ], - "filament_type": [ - "PLA" - ], - "filament_vendor": [ - "Generic" - ], - "filament_wipe": [ - "nil" - ], - "filament_wipe_distance": [ - "nil" - ], - "bed_type": [ - "Cool Plate" - ], - "nozzle_temperature_initial_layer": [ - "200" - ], - "full_fan_speed_layer": [ - "0" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "35" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_start_gcode": [ - "; Filament gcode\n" - ], - "nozzle_temperature": [ - "200" - ], - "temperature_vitrification": [ - "100" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_pa.json b/resources/profiles/Custom/filament/fdm_filament_pa.json deleted file mode 100644 index 58f53cd451..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_pa.json +++ /dev/null @@ -1,85 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pa", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "100" - ], - "hot_plate_temp" : [ - "100" - ], - "textured_plate_temp" : [ - "100" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "100" - ], - "hot_plate_temp_initial_layer" : [ - "100" - ], - "textured_plate_temp_initial_layer" : [ - "100" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "4" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "filament_type": [ - "PA" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "290" - ], - "reduce_fan_stop_start_freq": [ - "0" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "0" - ], - "overhang_fan_speed": [ - "30" - ], - "nozzle_temperature": [ - "290" - ], - "temperature_vitrification": [ - "108" - ], - "nozzle_temperature_range_low": [ - "270" - ], - "nozzle_temperature_range_high": [ - "300" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_pc.json b/resources/profiles/Custom/filament/fdm_filament_pc.json deleted file mode 100644 index cec8b89a38..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_pc.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pc", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "0" - ], - "eng_plate_temp" : [ - "110" - ], - "hot_plate_temp" : [ - "110" - ], - "textured_plate_temp" : [ - "110" - ], - "cool_plate_temp_initial_layer" : [ - "0" - ], - "eng_plate_temp_initial_layer" : [ - "110" - ], - "hot_plate_temp_initial_layer" : [ - "110" - ], - "textured_plate_temp_initial_layer" : [ - "110" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "30" - ], - "filament_max_volumetric_speed": [ - "23.2" - ], - "filament_type": [ - "PC" - ], - "filament_density": [ - "1.04" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "270" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "60" - ], - "fan_min_speed": [ - "10" - ], - "overhang_fan_threshold": [ - "25%" - ], - "overhang_fan_speed": [ - "60" - ], - "nozzle_temperature": [ - "280" - ], - "temperature_vitrification": [ - "140" - ], - "nozzle_temperature_range_low": [ - "260" - ], - "nozzle_temperature_range_high": [ - "280" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "2" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_pet.json b/resources/profiles/Custom/filament/fdm_filament_pet.json deleted file mode 100644 index bb2323e9c1..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_pet.json +++ /dev/null @@ -1,82 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pet", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "80" - ], - "textured_plate_temp" : [ - "80" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "80" - ], - "textured_plate_temp_initial_layer" : [ - "80" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "close_fan_the_first_x_layers": [ - "3" - ], - "fan_cooling_layer_time": [ - "20" - ], - "filament_max_volumetric_speed": [ - "25" - ], - "filament_type": [ - "PETG" - ], - "filament_density": [ - "1.27" - ], - "filament_cost": [ - "30" - ], - "nozzle_temperature_initial_layer": [ - "255" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "20" - ], - "overhang_fan_speed": [ - "100" - ], - "nozzle_temperature": [ - "255" - ], - "temperature_vitrification": [ - "80" - ], - "nozzle_temperature_range_low": [ - "220" - ], - "nozzle_temperature_range_high": [ - "260" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_pla.json b/resources/profiles/Custom/filament/fdm_filament_pla.json deleted file mode 100644 index 82c6772f35..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_pla.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pla", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "filament_type": [ - "PLA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "cool_plate_temp" : [ - "60" - ], - "eng_plate_temp" : [ - "60" - ], - "hot_plate_temp" : [ - "60" - ], - "textured_plate_temp" : [ - "60" - ], - "cool_plate_temp_initial_layer" : [ - "60" - ], - "eng_plate_temp_initial_layer" : [ - "60" - ], - "hot_plate_temp_initial_layer" : [ - "60" - ], - "textured_plate_temp_initial_layer" : [ - "60" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "230" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_pva.json b/resources/profiles/Custom/filament/fdm_filament_pva.json deleted file mode 100644 index ebf25aa3ae..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_pva.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_pva", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "35" - ], - "eng_plate_temp" : [ - "0" - ], - "hot_plate_temp" : [ - "45" - ], - "textured_plate_temp" : [ - "45" - ], - "cool_plate_temp_initial_layer" : [ - "35" - ], - "eng_plate_temp_initial_layer" : [ - "0" - ], - "hot_plate_temp_initial_layer" : [ - "45" - ], - "textured_plate_temp_initial_layer" : [ - "45" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_soluble": [ - "1" - ], - "filament_is_support": [ - "1" - ], - "filament_type": [ - "PVA" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "nozzle_temperature_initial_layer": [ - "220" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "overhang_fan_threshold": [ - "50%" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "220" - ], - "temperature_vitrification": [ - "50" - ], - "nozzle_temperature_range_low": [ - "190" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Custom/filament/fdm_filament_tpu.json b/resources/profiles/Custom/filament/fdm_filament_tpu.json deleted file mode 100644 index d00b7dbcab..0000000000 --- a/resources/profiles/Custom/filament/fdm_filament_tpu.json +++ /dev/null @@ -1,88 +0,0 @@ -{ - "type": "filament", - "name": "fdm_filament_tpu", - "from": "system", - "instantiation": "false", - "inherits": "fdm_filament_common", - "cool_plate_temp" : [ - "30" - ], - "eng_plate_temp" : [ - "30" - ], - "hot_plate_temp" : [ - "35" - ], - "textured_plate_temp" : [ - "35" - ], - "cool_plate_temp_initial_layer" : [ - "30" - ], - "eng_plate_temp_initial_layer" : [ - "30" - ], - "hot_plate_temp_initial_layer" : [ - "35" - ], - "textured_plate_temp_initial_layer" : [ - "35" - ], - "fan_cooling_layer_time": [ - "100" - ], - "filament_max_volumetric_speed": [ - "15" - ], - "filament_type": [ - "TPU" - ], - "filament_density": [ - "1.24" - ], - "filament_cost": [ - "20" - ], - "filament_retraction_length": [ - "0.4" - ], - "nozzle_temperature_initial_layer": [ - "240" - ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "100" - ], - "overhang_fan_speed": [ - "100" - ], - "additional_cooling_fan_speed": [ - "70" - ], - "close_fan_the_first_x_layers": [ - "1" - ], - "nozzle_temperature": [ - "240" - ], - "temperature_vitrification": [ - "60" - ], - "nozzle_temperature_range_low": [ - "200" - ], - "nozzle_temperature_range_high": [ - "250" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ] -} diff --git a/resources/profiles/Custom/machine/MyKlipper.json b/resources/profiles/Custom/machine/MyKlipper.json index 8c4b9f56e9..9f909d3615 100644 --- a/resources/profiles/Custom/machine/MyKlipper.json +++ b/resources/profiles/Custom/machine/MyKlipper.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "orcaslicer_bed_texture.svg", "hotend_model": "", - "default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF" + "default_materials": "Generic ABS @System;Generic PLA @System;Generic PLA-CF @System;Generic PETG @System;Generic TPU @System;Generic ASA @System;Generic PC @System;Generic PVA @System;Generic PA @System;Generic PA-CF @System" } diff --git a/resources/profiles/Custom/machine/MyMarlin.json b/resources/profiles/Custom/machine/MyMarlin.json index 78f5f2c125..afd744e9a2 100644 --- a/resources/profiles/Custom/machine/MyMarlin.json +++ b/resources/profiles/Custom/machine/MyMarlin.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "orcaslicer_bed_texture.svg", "hotend_model": "", - "default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF" + "default_materials": "Generic ABS @System;Generic PLA @System;Generic PLA-CF @System;Generic PETG @System;Generic TPU @System;Generic ASA @System;Generic PC @System;Generic PVA @System;Generic PA @System;Generic PA-CF @System" } diff --git a/resources/profiles/Custom/machine/MyRRF.json b/resources/profiles/Custom/machine/MyRRF.json index f03683d61f..c830e20956 100644 --- a/resources/profiles/Custom/machine/MyRRF.json +++ b/resources/profiles/Custom/machine/MyRRF.json @@ -8,5 +8,5 @@ "bed_model": "", "bed_texture": "orcaslicer_bed_texture.svg", "hotend_model": "", - "default_materials": "My Generic ABS;My Generic PLA;My Generic PLA-CF;My Generic PETG;My Generic TPU;My Generic ASA;My Generic PC;My Generic PVA;My Generic PA;My Generic PA-CF" -} + "default_materials": "Generic ABS @System;Generic PLA @System;Generic PLA-CF @System;Generic PETG @System;Generic TPU @System;Generic ASA @System;Generic PC @System;Generic PVA @System;Generic PA @System;Generic PA-CF @System" +} \ No newline at end of file diff --git a/resources/profiles/Custom/machine/MyToolChanger.json b/resources/profiles/Custom/machine/MyToolChanger.json index 9c927e4be2..97b29c97e7 100644 --- a/resources/profiles/Custom/machine/MyToolChanger.json +++ b/resources/profiles/Custom/machine/MyToolChanger.json @@ -8,5 +8,5 @@ "bed_model": "Custom_350_bed.stl", "bed_texture": "orcaslicer_bed_texture.svg", "hotend_model": "", - "default_materials": "My Generic PLA @MyToolChanger;My Generic ABS @MyToolChanger;My Generic PLA-CF @MyToolChanger;My Generic PETG @MyToolChanger;My Generic TPU @MyToolChanger;My Generic ASA @MyToolChanger;My Generic PC @MyToolChanger;My Generic PVA @MyToolChanger;My Generic PA @MyToolChanger;My Generic PA-CF @MyToolChanger" + "default_materials": "Generic PLA @MyToolChanger;Generic ABS @MyToolChanger;Generic PLA-CF @MyToolChanger;Generic PETG @MyToolChanger;Generic TPU @MyToolChanger;Generic ASA @MyToolChanger;Generic PC @MyToolChanger;Generic PVA @MyToolChanger;Generic PA @MyToolChanger;Generic PA-CF @MyToolChanger" } diff --git a/resources/profiles/OrcaFilamentLibrary.json b/resources/profiles/OrcaFilamentLibrary.json index 8422993b6b..6ade81d8dc 100644 --- a/resources/profiles/OrcaFilamentLibrary.json +++ b/resources/profiles/OrcaFilamentLibrary.json @@ -41,44 +41,44 @@ "sub_path": "filament/fdm_filament_pa.json" }, { - "name": "PLA", - "sub_path": "filament/PLA.json" + "name": "Generic PLA @System", + "sub_path": "filament/Generic PLA @System.json" }, { - "name": "PLA-CF", - "sub_path": "filament/PLA-CF.json" + "name": "Generic PLA-CF @System", + "sub_path": "filament/Generic PLA-CF @System.json" }, { - "name": "PETG", - "sub_path": "filament/PETG.json" + "name": "Generic PETG @System", + "sub_path": "filament/Generic PETG @System.json" }, { - "name": "ABS", - "sub_path": "filament/ABS.json" + "name": "Generic ABS @System", + "sub_path": "filament/Generic ABS @System.json" }, { - "name": "TPU", - "sub_path": "filament/TPU.json" + "name": "Generic TPU @System", + "sub_path": "filament/Generic TPU @System.json" }, { - "name": "ASA", - "sub_path": "filament/ASA.json" + "name": "Generic ASA @System", + "sub_path": "filament/Generic ASA @System.json" }, { - "name": "PC", - "sub_path": "filament/PC.json" + "name": "Generic PC @System", + "sub_path": "filament/Generic PC @System.json" }, { - "name": "PVA", - "sub_path": "filament/PVA.json" + "name": "Generic PVA @System", + "sub_path": "filament/Generic PVA @System.json" }, { - "name": "PA", - "sub_path": "filament/PA.json" + "name": "Generic PA @System", + "sub_path": "filament/Generic PA @System.json" }, { - "name": "PA-CF", - "sub_path": "filament/PA-CF.json" + "name": "Generic PA-CF @System", + "sub_path": "filament/Generic PA-CF @System.json" } ] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/ABS.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic ABS @System.json similarity index 50% rename from resources/profiles/OrcaFilamentLibrary/filament/ABS.json rename to resources/profiles/OrcaFilamentLibrary/filament/Generic ABS @System.json index 44070049e0..ea71bb0be1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/ABS.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic ABS @System.json @@ -2,16 +2,10 @@ "type": "filament", "filament_id": "GFB99", "setting_id": "GFSA04", - "name": "ABS", + "name": "Generic ABS @System", "from": "system", "instantiation": "true", + "renamed_from": "My Generic ABS", "inherits": "fdm_filament_abs", - "filament_flow_ratio": [ - "0.926" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - ] + "compatible_printers": [] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/ASA.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json similarity index 50% rename from resources/profiles/OrcaFilamentLibrary/filament/ASA.json rename to resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json index cf8550658a..a1a3b7dff1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/ASA.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json @@ -2,16 +2,10 @@ "type": "filament", "filament_id": "GFB98", "setting_id": "GFSA04", - "name": "ASA", + "name": "Generic ASA @System", "from": "system", "instantiation": "true", + "renamed_from": "My Generic ADA", "inherits": "fdm_filament_asa", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - ] + "compatible_printers": [] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json new file mode 100644 index 0000000000..4ea536ff67 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA @System.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "filament_id": "GFN99", + "setting_id": "GFSA04", + "name": "Generic PA @System", + "from": "system", + "instantiation": "true", + "renamed_from": "My Generic PA", + "inherits": "fdm_filament_pa", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json new file mode 100644 index 0000000000..db9bda2b68 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PA-CF @System.json @@ -0,0 +1,14 @@ +{ + "type": "filament", + "filament_id": "GFN98", + "setting_id": "GFSA04", + "name": "Generic PA-CF @System", + "from": "system", + "instantiation": "true", + "renamed_from": "My Generic PA-CF", + "inherits": "fdm_filament_pa", + "filament_type": [ + "PA-CF" + ], + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PC.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PC @System.json similarity index 50% rename from resources/profiles/OrcaFilamentLibrary/filament/PC.json rename to resources/profiles/OrcaFilamentLibrary/filament/Generic PC @System.json index f312594a28..a675580352 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/PC.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PC @System.json @@ -2,17 +2,10 @@ "type": "filament", "filament_id": "GFC99", "setting_id": "GFSA04", - "name": "PC", + "name": "Generic PC @System", "from": "system", "instantiation": "true", + "renamed_from": "My Generic PC", "inherits": "fdm_filament_pc", - "filament_max_volumetric_speed": [ - "12" - ], - "filament_flow_ratio": [ - "0.94" - ], - "compatible_printers": [ - - ] + "compatible_printers": [] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json new file mode 100644 index 0000000000..b8894b5689 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PETG @System.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "filament_id": "GFG99", + "setting_id": "GFSA04", + "name": "Generic PETG @System", + "from": "system", + "instantiation": "true", + "renamed_from": "My Generic PETG", + "inherits": "fdm_filament_pet", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json new file mode 100644 index 0000000000..bd6664bcc1 --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA @System.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA04", + "name": "Generic PLA @System", + "from": "system", + "instantiation": "true", + "renamed_from": "My Generic PLA", + "inherits": "fdm_filament_pla", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PLA-CF.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA-CF @System.json similarity index 61% rename from resources/profiles/OrcaFilamentLibrary/filament/PLA-CF.json rename to resources/profiles/OrcaFilamentLibrary/filament/Generic PLA-CF @System.json index 331000a180..b3230a54c3 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/PLA-CF.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PLA-CF @System.json @@ -2,9 +2,10 @@ "type": "filament", "filament_id": "GFL98", "setting_id": "GFSA04", - "name": "PLA-CF", + "name": "Generic PLA-CF @System", "from": "system", "instantiation": "true", + "renamed_from": "My Generic PLA-CF", "inherits": "fdm_filament_pla", "filament_flow_ratio": [ "0.95" @@ -12,13 +13,5 @@ "filament_type": [ "PLA-CF" ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], - "compatible_printers": [ - - ] + "compatible_printers": [] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json new file mode 100644 index 0000000000..9cd38a379c --- /dev/null +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic PVA @System.json @@ -0,0 +1,11 @@ +{ + "type": "filament", + "filament_id": "GFS99", + "setting_id": "GFSA04", + "name": "Generic PVA @System", + "from": "system", + "instantiation": "true", + "renamed_from": "My Generic PVA", + "inherits": "fdm_filament_pva", + "compatible_printers": [] +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/TPU.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic TPU @System.json similarity index 59% rename from resources/profiles/OrcaFilamentLibrary/filament/TPU.json rename to resources/profiles/OrcaFilamentLibrary/filament/Generic TPU @System.json index 9c59eaea0a..2d579a4a09 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/TPU.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic TPU @System.json @@ -2,14 +2,10 @@ "type": "filament", "filament_id": "GFU99", "setting_id": "GFSA04", - "name": "TPU", + "name": "Generic TPU @System", "from": "system", "instantiation": "true", + "renamed_from": "My Generic TPU", "inherits": "fdm_filament_tpu", - "filament_max_volumetric_speed": [ - "3.2" - ], - "compatible_printers": [ - - ] + "compatible_printers": [] } \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json b/resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json deleted file mode 100644 index dd6a8b6821..0000000000 --- a/resources/profiles/OrcaFilamentLibrary/filament/PA-CF.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFN98", - "setting_id": "GFSA04", - "name": "PA-CF", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "filament_type": [ - "PA-CF" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "8" - ], - "compatible_printers": [ - ] -} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PA.json b/resources/profiles/OrcaFilamentLibrary/filament/PA.json deleted file mode 100644 index 6066074460..0000000000 --- a/resources/profiles/OrcaFilamentLibrary/filament/PA.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFN99", - "setting_id": "GFSA04", - "name": "PA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pa", - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "compatible_printers": [ - - ] -} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PETG.json b/resources/profiles/OrcaFilamentLibrary/filament/PETG.json deleted file mode 100644 index 4f1a274205..0000000000 --- a/resources/profiles/OrcaFilamentLibrary/filament/PETG.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFG99", - "setting_id": "GFSA04", - "name": "PETG", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pet", - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_cooling_layer_time": [ - "30" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], - "compatible_printers": [ - - ] -} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PLA.json b/resources/profiles/OrcaFilamentLibrary/filament/PLA.json deleted file mode 100644 index db4f22f2cc..0000000000 --- a/resources/profiles/OrcaFilamentLibrary/filament/PLA.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFL99", - "setting_id": "GFSA04", - "name": "PLA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pla", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "8" - ], - "compatible_printers": [ - ] -} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/PVA.json b/resources/profiles/OrcaFilamentLibrary/filament/PVA.json deleted file mode 100644 index cfc400222b..0000000000 --- a/resources/profiles/OrcaFilamentLibrary/filament/PVA.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "type": "filament", - "filament_id": "GFS99", - "setting_id": "GFSA04", - "name": "PVA", - "from": "system", - "instantiation": "true", - "inherits": "fdm_filament_pva", - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], - "slow_down_min_speed": [ - "10" - ], - "compatible_printers": [ - - ] -} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json index b9d4eeda31..f571c47f6f 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_abs.json @@ -4,28 +4,28 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", - "cool_plate_temp" : [ + "cool_plate_temp": [ "105" ], - "eng_plate_temp" : [ + "eng_plate_temp": [ "105" ], - "hot_plate_temp" : [ + "hot_plate_temp": [ "105" ], - "textured_plate_temp" : [ + "textured_plate_temp": [ "105" ], - "cool_plate_temp_initial_layer" : [ + "cool_plate_temp_initial_layer": [ "105" ], - "eng_plate_temp_initial_layer" : [ + "eng_plate_temp_initial_layer": [ "105" ], - "hot_plate_temp_initial_layer" : [ + "hot_plate_temp_initial_layer": [ "105" ], - "textured_plate_temp_initial_layer" : [ + "textured_plate_temp_initial_layer": [ "105" ], "slow_down_for_layer_cooling": [ @@ -37,9 +37,6 @@ "fan_cooling_layer_time": [ "30" ], - "filament_max_volumetric_speed": [ - "28.6" - ], "filament_type": [ "ABS" ], @@ -84,5 +81,11 @@ ], "slow_down_layer_time": [ "3" + ], + "filament_flow_ratio": [ + "0.926" + ], + "filament_max_volumetric_speed": [ + "12" ] -} +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json index 262c561bda..8baa401de1 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_asa.json @@ -37,9 +37,6 @@ "fan_cooling_layer_time": [ "35" ], - "filament_max_volumetric_speed": [ - "28.6" - ], "filament_type": [ "ASA" ], @@ -84,5 +81,11 @@ ], "slow_down_layer_time": [ "3" + ], + "filament_flow_ratio": [ + "0.93" + ], + "filament_max_volumetric_speed": [ + "12" ] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json index 6c199d1e5c..9f77975119 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_common.json @@ -103,7 +103,7 @@ "PLA" ], "filament_vendor": [ - "OrcaSlicer" + "Generic" ], "filament_wipe": [ "nil" diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json index 58f53cd451..8528ef7543 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pa.json @@ -37,9 +37,6 @@ "fan_cooling_layer_time": [ "4" ], - "filament_max_volumetric_speed": [ - "8" - ], "filament_type": [ "PA" ], @@ -49,9 +46,6 @@ "filament_cost": [ "20" ], - "nozzle_temperature_initial_layer": [ - "290" - ], "reduce_fan_stop_start_freq": [ "0" ], @@ -64,9 +58,6 @@ "overhang_fan_speed": [ "30" ], - "nozzle_temperature": [ - "290" - ], "temperature_vitrification": [ "108" ], @@ -81,5 +72,14 @@ ], "slow_down_layer_time": [ "2" + ], + "nozzle_temperature_initial_layer": [ + "290" + ], + "nozzle_temperature": [ + "290" + ], + "filament_max_volumetric_speed": [ + "10" ] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json index cec8b89a38..fd855bd484 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pc.json @@ -37,9 +37,6 @@ "fan_cooling_layer_time": [ "30" ], - "filament_max_volumetric_speed": [ - "23.2" - ], "filament_type": [ "PC" ], @@ -84,5 +81,11 @@ ], "slow_down_layer_time": [ "2" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "filament_flow_ratio": [ + "0.94" ] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json index bb2323e9c1..212edcc5bf 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pet.json @@ -28,18 +28,9 @@ "textured_plate_temp_initial_layer" : [ "80" ], - "slow_down_for_layer_cooling": [ - "1" - ], "close_fan_the_first_x_layers": [ "3" ], - "fan_cooling_layer_time": [ - "20" - ], - "filament_max_volumetric_speed": [ - "25" - ], "filament_type": [ "PETG" ], @@ -52,18 +43,6 @@ "nozzle_temperature_initial_layer": [ "255" ], - "reduce_fan_stop_start_freq": [ - "1" - ], - "fan_max_speed": [ - "100" - ], - "fan_min_speed": [ - "20" - ], - "overhang_fan_speed": [ - "100" - ], "nozzle_temperature": [ "255" ], @@ -78,5 +57,38 @@ ], "filament_start_gcode": [ "; filament start gcode\n" + ], + "reduce_fan_stop_start_freq": [ + "1" + ], + "slow_down_for_layer_cooling": [ + "1" + ], + "fan_cooling_layer_time": [ + "30" + ], + "overhang_fan_speed": [ + "90" + ], + "overhang_fan_threshold": [ + "25%" + ], + "fan_max_speed": [ + "90" + ], + "fan_min_speed": [ + "40" + ], + "slow_down_min_speed": [ + "10" + ], + "slow_down_layer_time": [ + "8" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "10" ] } diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json index 82c6772f35..1c8ee472a9 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pla.json @@ -7,9 +7,6 @@ "fan_cooling_layer_time": [ "100" ], - "filament_max_volumetric_speed": [ - "12" - ], "filament_type": [ "PLA" ], @@ -19,28 +16,28 @@ "filament_cost": [ "20" ], - "cool_plate_temp" : [ + "cool_plate_temp": [ "60" ], - "eng_plate_temp" : [ + "eng_plate_temp": [ "60" ], - "hot_plate_temp" : [ + "hot_plate_temp": [ "60" ], - "textured_plate_temp" : [ + "textured_plate_temp": [ "60" ], - "cool_plate_temp_initial_layer" : [ + "cool_plate_temp_initial_layer": [ "60" ], - "eng_plate_temp_initial_layer" : [ + "eng_plate_temp_initial_layer": [ "60" ], - "hot_plate_temp_initial_layer" : [ + "hot_plate_temp_initial_layer": [ "60" ], - "textured_plate_temp_initial_layer" : [ + "textured_plate_temp_initial_layer": [ "60" ], "nozzle_temperature_initial_layer": [ @@ -82,13 +79,19 @@ "slow_down_min_speed": [ "10" ], - "slow_down_layer_time": [ - "4" - ], "additional_cooling_fan_speed": [ "70" ], "filament_start_gcode": [ "; filament start gcode\n" + ], + "filament_flow_ratio": [ + "0.98" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "6" ] -} +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json index ebf25aa3ae..f7a5a010fa 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_pva.json @@ -4,36 +4,33 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", - "cool_plate_temp" : [ + "cool_plate_temp": [ "35" ], - "eng_plate_temp" : [ + "eng_plate_temp": [ "0" ], - "hot_plate_temp" : [ + "hot_plate_temp": [ "45" ], - "textured_plate_temp" : [ + "textured_plate_temp": [ "45" ], - "cool_plate_temp_initial_layer" : [ + "cool_plate_temp_initial_layer": [ "35" ], - "eng_plate_temp_initial_layer" : [ + "eng_plate_temp_initial_layer": [ "0" ], - "hot_plate_temp_initial_layer" : [ + "hot_plate_temp_initial_layer": [ "45" ], - "textured_plate_temp_initial_layer" : [ + "textured_plate_temp_initial_layer": [ "45" ], "fan_cooling_layer_time": [ "100" ], - "filament_max_volumetric_speed": [ - "15" - ], "filament_soluble": [ "1" ], @@ -85,16 +82,22 @@ "nozzle_temperature_range_high": [ "250" ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "4" - ], "additional_cooling_fan_speed": [ "70" ], "filament_start_gcode": [ "; filament start gcode\n" + ], + "filament_flow_ratio": [ + "0.95" + ], + "filament_max_volumetric_speed": [ + "12" + ], + "slow_down_layer_time": [ + "7" + ], + "slow_down_min_speed": [ + "10" ] -} +} \ No newline at end of file diff --git a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json index d00b7dbcab..46726ab5e5 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/fdm_filament_tpu.json @@ -4,36 +4,33 @@ "from": "system", "instantiation": "false", "inherits": "fdm_filament_common", - "cool_plate_temp" : [ + "cool_plate_temp": [ "30" ], - "eng_plate_temp" : [ + "eng_plate_temp": [ "30" ], - "hot_plate_temp" : [ + "hot_plate_temp": [ "35" ], - "textured_plate_temp" : [ + "textured_plate_temp": [ "35" ], - "cool_plate_temp_initial_layer" : [ + "cool_plate_temp_initial_layer": [ "30" ], - "eng_plate_temp_initial_layer" : [ + "eng_plate_temp_initial_layer": [ "30" ], - "hot_plate_temp_initial_layer" : [ + "hot_plate_temp_initial_layer": [ "35" ], - "textured_plate_temp_initial_layer" : [ + "textured_plate_temp_initial_layer": [ "35" ], "fan_cooling_layer_time": [ "100" ], - "filament_max_volumetric_speed": [ - "15" - ], "filament_type": [ "TPU" ], @@ -84,5 +81,8 @@ ], "filament_start_gcode": [ "; filament start gcode\n" + ], + "filament_max_volumetric_speed": [ + "3.2" ] -} +} \ No newline at end of file diff --git a/resources/profiles/Prusa/process/0.20mm Speed @MK3S 0.4.json b/resources/profiles/Prusa/process/0.20mm Speed @MK3S 0.4.json index 73355f53c2..7ae485dfef 100644 --- a/resources/profiles/Prusa/process/0.20mm Speed @MK3S 0.4.json +++ b/resources/profiles/Prusa/process/0.20mm Speed @MK3S 0.4.json @@ -3,7 +3,6 @@ "print_settings_id": "0.20mm Speed @MK3S 0.4", "name": "0.20mm Speed @MK3S 0.4", "from": "system", - "renamed_from":"0.20mm Standard @MK3S", "instantiation": "true", "inherits": "process_common_mk3", "bottom_shell_layers": "4", diff --git a/resources/web/guide/22/22.js b/resources/web/guide/22/22.js index 90f0bcef68..ce75dd59eb 100644 --- a/resources/web/guide/22/22.js +++ b/resources/web/guide/22/22.js @@ -199,7 +199,11 @@ function SortUI() let strModel=pFila.attr("model"); let strFilalist=pFila.attr("filalist"); - pFila.attr("model", strModel+fModel); + if(strModel == '' || fModel == '') + pFila.attr("model", ''); + else + pFila.attr("model", strModel+fModel); + pFila.attr("filalist", strFilalist+fWholeName+';'); } diff --git a/resources/web/guide/23/23.js b/resources/web/guide/23/23.js index ba92265a96..1b9ce0e562 100644 --- a/resources/web/guide/23/23.js +++ b/resources/web/guide/23/23.js @@ -71,30 +71,7 @@ function SortUI() ModelList.push(OneMode); } - //machine -// let HtmlMachine=''; -// -// let nMachine=m_ProfileItem['machine'].length; -// for(let n=0;n'+sName+''; -// } -// } -// -// $('#MachineList .CValues').append(HtmlMachine); -// $('#MachineList .CValues input').prop("checked",true); -// if(nMachine<=1) -// { -// $('#MachineList').hide(); -// } - + //model let HtmlMode=''; nMode=ModelList.length; @@ -131,15 +108,6 @@ function SortUI() let fSelect=OneFila['selected']; let fModel=OneFila['models'] - //alert( fWholeName+' - '+fShortName+' - '+fVendor+' - '+fType+' - '+fSelect+' - '+fModel ); - -// if(OneFila['name'].indexOf("Bambu PA-CF")>=0) -// { -// alert( fShortName+' - '+fVendor+' - '+fType+' - '+fSelect+' - '+fModel ) -// -// let b=1+2; -// } - let bFind=false; //let bCheck=$("#MachineList input:first").prop("checked"); if( fModel=='') @@ -204,7 +172,10 @@ function SortUI() let strModel=pFila.attr("model"); let strFilalist=pFila.attr("filalist"); - pFila.attr("model", strModel+fModel); + if(strModel == '' || fModel == '') + pFila.attr("model", ''); + else + pFila.attr("model", strModel+fModel); pFila.attr("filalist", strFilalist+fWholeName+';'); } diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index a4394f624c..9a5eac6bc2 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -608,6 +608,15 @@ bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const Pre // if (preset.vendor != nullptr && preset.vendor != active_printer.vendor) // // The current profile has a vendor assigned and it is different from the active print's vendor. // return false; + + // Orca: check excluded printers + if (preset.vendor != nullptr && preset.preset.type == Preset::TYPE_FILAMENT) { + const auto& excluded_printers = preset.preset.m_excluded_from; + const auto excluded = preset.vendor->name == PresetBundle::ORCA_FILAMENT_LIBRARY && + excluded_printers.find(active_printer.preset.name) != excluded_printers.end(); + if (excluded) + return false; + } auto &condition = preset.preset.compatible_printers_condition(); auto *compatible_printers = dynamic_cast(preset.preset.config.option("compatible_printers")); bool has_compatible_printers = compatible_printers != nullptr && ! compatible_printers->values.empty(); @@ -621,10 +630,9 @@ bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const Pre } } return preset.preset.is_default || active_printer.preset.name.empty() || !has_compatible_printers || - std::find(compatible_printers->values.begin(), compatible_printers->values.end(), active_printer.preset.name) != - compatible_printers->values.end() - //BBS - || (!active_printer.preset.is_system && is_compatible_with_parent_printer(preset, active_printer)); + std::find(compatible_printers->values.begin(), compatible_printers->values.end(), active_printer.preset.name) != + compatible_printers->values.end() || + (!active_printer.preset.is_system && is_compatible_with_parent_printer(preset, active_printer)); } bool is_compatible_with_printer(const PresetWithVendorProfile &preset, const PresetWithVendorProfile &active_printer) @@ -2121,6 +2129,7 @@ bool PresetCollection::clone_presets(std::vector const &presets, auto &preset = new_presets.back(); preset.vendor = nullptr; preset.renamed_from.clear(); + preset.m_excluded_from.clear(); preset.setting_id.clear(); preset.inherits().clear(); preset.is_default = false; @@ -2249,6 +2258,7 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det preset.inherits().clear(); preset.alias.clear(); preset.renamed_from.clear(); + preset.m_excluded_from.clear(); BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << boost::format(": save preset %1% , with detach")%new_name; } //BBS: add lock logic for sync preset in background @@ -2276,6 +2286,7 @@ void PresetCollection::save_current_preset(const std::string &new_name, bool det preset.vendor = nullptr; preset.alias.clear(); preset.renamed_from.clear(); + preset.m_excluded_from.clear(); preset.setting_id.clear(); if (detach) { // Clear the link to the parent profile. @@ -2868,6 +2879,38 @@ void PresetCollection::update_map_alias_to_profile_name() //std::sort(m_map_alias_to_profile_name.begin(), m_map_alias_to_profile_name.end(), [](auto &l, auto &r) { return l.first < r.first; }); } +void PresetCollection::update_library_profile_excluded_from() +{ + // Orca: Collect all filament presets that has empty compatible_printers and belongs to the Orca Filament Library. + std::map*> excluded_froms; + for (Preset& preset : m_presets) { + if (preset.vendor != nullptr && preset.vendor->name == PresetBundle::ORCA_FILAMENT_LIBRARY) { + // check if the preset has empty compatible_printers + const auto* compatible_printers = dynamic_cast(preset.config.option("compatible_printers")); + if (compatible_printers == nullptr || compatible_printers->values.empty()) + excluded_froms[preset.alias] = &preset.m_excluded_from; + } + } + + // Check all presets that has the same alias as the filament presets with empty compatible_printers in Orca Filament Library. + for (const Preset& preset : m_presets) { + if (preset.vendor == nullptr || preset.vendor->name == PresetBundle::ORCA_FILAMENT_LIBRARY) + continue; + + const auto* compatible_printers = dynamic_cast(preset.config.option("compatible_printers")); + // All profiles in concrete vendor profile shouldn't have empty compatible_printers, but here we check it for safety. + if (compatible_printers == nullptr || compatible_printers->values.empty()) + continue; + auto itr = excluded_froms.find(preset.alias); + if (itr != excluded_froms.end()) { + // Add the printer models to the excluded_from list. + for (const std::string& printer_name : compatible_printers->values) { + itr->second->insert(printer_name); + } + } + } +} + void PresetCollection::update_map_system_profile_renamed() { m_map_system_profile_renamed.clear(); diff --git a/src/libslic3r/Preset.hpp b/src/libslic3r/Preset.hpp index 359abf6d62..6eae6df160 100644 --- a/src/libslic3r/Preset.hpp +++ b/src/libslic3r/Preset.hpp @@ -3,6 +3,7 @@ #include #include +#include #include #include #include @@ -233,6 +234,11 @@ public: // and to match the "inherits" field of user profiles with updated system profiles. std::vector renamed_from; + // Orca: maintain a list of printer models that are excluded from this preset, designed for filaments without compatible_printer defined + // (hence they are visible to all printer models by default) in Orca Filament Library. However, we might have speciliazed filament for + // certain printer models defined in the vendor profile as well, in this case we want to hide this generic preset for these printer models. + std::set m_excluded_from; + //BBS Semver version; // version of preset std::string ini_str; // ini string of preset @@ -721,6 +727,10 @@ protected: // Update m_map_system_profile_renamed from loaded system profiles. void update_map_system_profile_renamed(); + // Orca: update m_excluded_from loaded system profiles. + void update_library_profile_excluded_from(); + + void set_custom_preset_alias(Preset &preset); private: diff --git a/src/libslic3r/PresetBundle.cpp b/src/libslic3r/PresetBundle.cpp index f8103ff4fe..f40261d6d8 100644 --- a/src/libslic3r/PresetBundle.cpp +++ b/src/libslic3r/PresetBundle.cpp @@ -1164,66 +1164,6 @@ void PresetBundle::remove_users_preset(AppConfig &config, std::map PresetBundle::load_system_presets(ForwardCompatibilitySubstitutionRule compatibility_rule) -{ - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, compatibility_rule %1%")%compatibility_rule; - if (compatibility_rule == ForwardCompatibilitySubstitutionRule::EnableSystemSilent) - // Loading system presets, don't log substitutions. - compatibility_rule = ForwardCompatibilitySubstitutionRule::EnableSilent; - else if (compatibility_rule == ForwardCompatibilitySubstitutionRule::EnableSilentDisableSystem) - // Loading system presets, throw on unknown option value. - compatibility_rule = ForwardCompatibilitySubstitutionRule::Disable; - - // Here the vendor specific read only Config Bundles are stored. - //BBS: change directory by design - boost::filesystem::path dir = (boost::filesystem::path(data_dir()) / PRESET_SYSTEM_DIR).make_preferred(); - PresetsConfigSubstitutions substitutions; - std::string errors_cummulative; - bool first = true; - for (auto &dir_entry : boost::filesystem::directory_iterator(dir)) - if (Slic3r::is_ini_file(dir_entry)) { - std::string name = dir_entry.path().filename().string(); - // Remove the .ini suffix. - name.erase(name.size() - 4); - try { - // Load the config bundle, flatten it. - if (first) { - // Reset this PresetBundle and load the first vendor config. - append(substitutions, this->load_configbundle(dir_entry.path().string(), PresetBundle::LoadSystem, compatibility_rule).first); - first = false; - } else { - // Load the other vendor configs, merge them with this PresetBundle. - // Report duplicate profiles. - PresetBundle other; - append(substitutions, other.load_configbundle(dir_entry.path().string(), PresetBundle::LoadSystem, compatibility_rule).first); - std::vector duplicates = this->merge_presets(std::move(other)); - if (! duplicates.empty()) { - errors_cummulative += "Vendor configuration file " + name + " contains the following presets with names used by other vendors: "; - for (size_t i = 0; i < duplicates.size(); ++ i) { - if (i > 0) - errors_cummulative += ", "; - errors_cummulative += duplicates[i]; - } - } - } - } catch (const std::runtime_error &err) { - errors_cummulative += err.what(); - errors_cummulative += "\n"; - } - } - if (first) { - // No config bundle loaded, reset. - this->reset(false); - } - - this->update_system_maps(); - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" finished, errors_cummulative %1%")%errors_cummulative; - return std::make_pair(std::move(substitutions), errors_cummulative); -}*/ //BBS: add json related logic, load system presets from json std::pair PresetBundle::load_system_presets_from_json(ForwardCompatibilitySubstitutionRule compatibility_rule) @@ -1284,12 +1224,14 @@ std::pair PresetBundle::load_system_pre PresetBundle other; append(substitutions, other.load_vendor_configs_from_json(dir.string(), vendor_name, PresetBundle::LoadSystem, compatibility_rule, this).first); std::vector duplicates = this->merge_presets(std::move(other)); - if (! duplicates.empty()) { + if (!duplicates.empty()) { errors_cummulative += "Found duplicated settings in vendor " + vendor_name + "'s json file lists: "; - for (size_t i = 0; i < duplicates.size(); ++ i) { + for (size_t i = 0; i < duplicates.size(); ++i) { if (i > 0) errors_cummulative += ", "; errors_cummulative += duplicates[i]; + ++m_errors; + BOOST_LOG_TRIVIAL(error) << "Found duplicated preset: " + duplicates[i] + " in vendor: " + vendor_name + ": "; } } } @@ -1459,6 +1401,8 @@ void PresetBundle::update_system_maps() this->sla_prints .update_map_alias_to_profile_name(); this->filaments .update_map_alias_to_profile_name(); this->sla_materials.update_map_alias_to_profile_name(); + + this->filaments.update_library_profile_excluded_from(); } static inline std::string remove_ini_suffix(const std::string &name) @@ -2427,54 +2371,7 @@ ConfigSubstitutions PresetBundle::load_config_file(const std::string &path, Forw //BBS: add config related logs BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" can not load config file %1% not from gcode")%path ; throw Slic3r::RuntimeError(std::string("Unknown configuration file: ") + path); - // 1) Try to load the config file into a boost property tree. - /*boost::property_tree::ptree tree; - try { - boost::nowide::ifstream ifs(path); - boost::property_tree::read_ini(ifs, tree); - } catch (const std::ifstream::failure &err) { - throw Slic3r::RuntimeError(std::string("The Config Bundle cannot be loaded: ") + path + "\n\tReason: " + err.what()); - } catch (const boost::property_tree::file_parser_error &err) { - throw Slic3r::RuntimeError(format("Failed loading the Config Bundle \"%1%\": %2% at line %3%", - err.filename(), err.message(), err.line())); - } catch (const std::runtime_error &err) { - throw Slic3r::RuntimeError(std::string("Failed loading the preset file: ") + path + "\n\tReason: " + err.what()); - } - - // 2) Continue based on the type of the configuration file. - ConfigFileType config_file_type = guess_config_file_type(tree); - ConfigSubstitutions config_substitutions; - try { - switch (config_file_type) { - case CONFIG_FILE_TYPE_UNKNOWN: - throw Slic3r::RuntimeError(std::string("Unknown configuration file type: ") + path); - case CONFIG_FILE_TYPE_APP_CONFIG: - throw Slic3r::RuntimeError(std::string("Invalid configuration file: ") + path + ". This is an application config file."); - case CONFIG_FILE_TYPE_CONFIG: - { - // Initialize a config from full defaults. - DynamicPrintConfig config; - config.apply(FullPrintConfig::defaults()); - config_substitutions = config.load(tree, compatibility_rule); - Preset::normalize(config); - load_config_file_config(path, true, std::move(config)); - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": normal config, finished, got %1% substitutions")%config_substitutions.size(); - return config_substitutions; - } - case CONFIG_FILE_TYPE_CONFIG_BUNDLE: - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": found config bundle"); - return load_config_file_config_bundle(path, tree, compatibility_rule); - } - } catch (const ConfigurationError &e) { - throw Slic3r::RuntimeError(format("Invalid configuration file %1%: %2%", path, e.what())); - } - - //BBS: add config related logs - BOOST_LOG_TRIVIAL(error) << __FUNCTION__ << boost::format(" finished, should not be here"); - // This shall never happen. Suppres compiler warnings. - assert(false);*/ + return ConfigSubstitutions{}; } @@ -2736,569 +2633,6 @@ void PresetBundle::load_config_file_config(const std::string &name_or_path, bool BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": finished"); } -// Load the active configuration of a config bundle from a boost property_tree. This is a private method called from load_config_file. -/*ConfigSubstitutions PresetBundle::load_config_file_config_bundle( - const std::string &path, const boost::property_tree::ptree &tree, ForwardCompatibilitySubstitutionRule compatibility_rule) -{ - // 1) Load the config bundle into a temp data. - PresetBundle tmp_bundle; - // Load the config bundle, but don't save the loaded presets to user profile directory, as only the presets marked as active in the loaded preset bundle - // will be loaded into the master PresetBundle and activated. - auto [presets_substitutions, presets_imported] = tmp_bundle.load_configbundle(path, {}, compatibility_rule); - UNUSED(presets_imported); - - std::string bundle_name = std::string(" - ") + boost::filesystem::path(path).filename().string(); - - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": enter, bundle_name %1%")%bundle_name; - // 2) Extract active configs from the config bundle, copy them and activate them in this bundle. - ConfigSubstitutions config_substitutions; - auto load_one = [&path, &bundle_name, &presets_substitutions = presets_substitutions, &config_substitutions]( - PresetCollection &collection_dst, PresetCollection &collection_src, const std::string &preset_name_src, bool activate) -> std::string { - // If there are substitutions reported for this preset, move them to config_substitutions. - if (auto it = std::find_if(presets_substitutions.begin(), presets_substitutions.end(), [&preset_name_src](const PresetConfigSubstitutions& subs){ return subs.preset_name == preset_name_src; }); - it != presets_substitutions.end() && ! it->substitutions.empty()) - append(config_substitutions, std::move(it->substitutions)); - Preset *preset_src = collection_src.find_preset(preset_name_src, false); - Preset *preset_dst = collection_dst.find_preset(preset_name_src, false); - assert(preset_src != nullptr); - std::string preset_name_dst; - if (preset_dst != nullptr && preset_dst->is_default) { - // No need to copy a default preset, it always exists in collection_dst. - if (activate) - collection_dst.select_preset(0); - return preset_name_src; - } else if (preset_dst != nullptr && preset_src->config == preset_dst->config) { - // Don't save as the config exists in the current bundle and its content is the same. - return preset_name_src; - } else { - // Generate a new unique name. - preset_name_dst = preset_name_src + bundle_name; - Preset *preset_dup = nullptr; - for (size_t i = 1; (preset_dup = collection_dst.find_preset(preset_name_dst, false)) != nullptr; ++ i) { - if (preset_src->config == preset_dup->config) - // The preset has been already copied into collection_dst. - return preset_name_dst; - // Try to generate another name. - char buf[64]; - sprintf(buf, " (%d)", (int)i); - preset_name_dst = preset_name_src + buf + bundle_name; - } - } - assert(! preset_name_dst.empty()); - // Save preset_src->config into collection_dst under preset_name_dst. - // The "compatible_printers" field should not have been exported into a config.ini or a G-code anyway, - // but some of the alpha versions of Slic3r did. - ConfigOption *opt_compatible = preset_src->config.optptr("compatible_printers"); - if (opt_compatible != nullptr) { - assert(opt_compatible->type() == coStrings); - if (opt_compatible->type() == coStrings) - static_cast(opt_compatible)->values.clear(); - } - (collection_dst.type() == Preset::TYPE_FILAMENT ? - collection_dst.load_preset(path, preset_name_dst, preset_src->config, activate) : - // Only move the source config for non filament profiles, as single filament profile may be referenced multiple times. - collection_dst.load_preset(path, preset_name_dst, std::move(preset_src->config), activate)) - .is_external = true; - return preset_name_dst; - }; - load_one(this->prints, tmp_bundle.prints, tmp_bundle.prints .get_selected_preset_name(), true); - load_one(this->sla_prints, tmp_bundle.sla_prints, tmp_bundle.sla_prints .get_selected_preset_name(), true); - load_one(this->filaments, tmp_bundle.filaments, tmp_bundle.filaments .get_selected_preset_name(), true); - load_one(this->sla_materials, tmp_bundle.sla_materials, tmp_bundle.sla_materials.get_selected_preset_name(), true); - load_one(this->printers, tmp_bundle.printers, tmp_bundle.printers .get_selected_preset_name(), true); - this->update_multi_material_filament_presets(); - for (size_t i = 1; i < std::min(tmp_bundle.filament_presets.size(), this->filament_presets.size()); ++ i) - this->filament_presets[i] = load_one(this->filaments, tmp_bundle.filaments, tmp_bundle.filament_presets[i], false); - - this->update_compatible(PresetSelectCompatibleType::Never); - - sort_remove_duplicates(config_substitutions); - - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(": finished, got %1% substitutions")%config_substitutions.size(); - return config_substitutions; -}*/ - -// Process the Config Bundle loaded as a Boost property tree. -// For each print, filament and printer preset (group defined by group_name), apply the inherited presets. -// The presets starting with '*' are considered non-terminal and they are -// removed through the flattening process by this function. -// This function will never fail, but it will produce error messages through boost::log. -// system_profiles will not be flattened, and they will be kept inside the "inherits" field -/*static void flatten_configbundle_hierarchy(boost::property_tree::ptree &tree, const std::string &group_name, const std::vector &system_profiles) -{ - namespace pt = boost::property_tree; - - // 1) For the group given by group_name, initialize the presets. - struct Prst { - Prst(const std::string &name, pt::ptree *node) : name(name), node(node) {} - // Name of this preset. If the name starts with '*', it is an intermediate preset, - // which will not make it into the result. - const std::string name; - // Link to the source boost property tree node, owned by tree. - pt::ptree *node; - // Link to the presets, from which this preset inherits. - std::vector inherits; - // Link to the presets, for which this preset is a direct parent. - std::vector parent_of; - // When running the Kahn's Topological sorting algorithm, this counter is decreased from inherits.size() to zero. - // A cycle is indicated, if the number does not drop to zero after the Kahn's algorithm finishes. - size_t num_incoming_edges_left = 0; - // Sorting by the name, to be used when inserted into std::set. - bool operator==(const Prst &rhs) const { return this->name == rhs.name; } - bool operator< (const Prst &rhs) const { return this->name < rhs.name; } - }; - // Find the presets, store them into a std::map, addressed by their names. - std::set presets; - std::string group_name_preset = group_name + ":"; - for (auto §ion : tree) - if (boost::starts_with(section.first, group_name_preset) && section.first.size() > group_name_preset.size()) - presets.emplace(section.first.substr(group_name_preset.size()), §ion.second); - // Fill in the "inherits" and "parent_of" members, report invalid inheritance fields. - for (const Prst &prst : presets) { - // Parse the list of comma separated values, possibly enclosed in quotes. - std::vector inherits_names; - std::vector inherits_system; - if (Slic3r::unescape_strings_cstyle(prst.node->get("inherits", ""), inherits_names)) { - // Resolve the inheritance by name. - std::vector &inherits_nodes = const_cast(prst).inherits; - for (const std::string &node_name : inherits_names) { - auto it_system = std::lower_bound(system_profiles.begin(), system_profiles.end(), node_name); - if (it_system != system_profiles.end() && *it_system == node_name) { - // Loading a user config budnle, this preset is derived from a system profile. - inherits_system.emplace_back(node_name); - } else { - auto it = presets.find(Prst(node_name, nullptr)); - if (it == presets.end()) - BOOST_LOG_TRIVIAL(error) << "flatten_configbundle_hierarchy: The preset " << prst.name << " inherits an unknown preset \"" << node_name << "\""; - else { - inherits_nodes.emplace_back(const_cast(&(*it))); - inherits_nodes.back()->parent_of.emplace_back(const_cast(&prst)); - } - } - } - } else { - BOOST_LOG_TRIVIAL(error) << "flatten_configbundle_hierarchy: The preset " << prst.name << " has an invalid \"inherits\" field"; - } - // Remove the "inherits" key, it has no meaning outside of the config bundle. - const_cast(prst.node)->erase("inherits"); - if (! inherits_system.empty()) { - // Loaded a user config bundle, where a profile inherits a system profile. - // User profile should be derived from a single system profile only. - assert(inherits_system.size() == 1); - if (inherits_system.size() > 1) - BOOST_LOG_TRIVIAL(error) << "flatten_configbundle_hierarchy: The preset " << prst.name << " inherits from more than single system preset"; - prst.node->put("inherits", Slic3r::escape_string_cstyle(inherits_system.front())); - } - } - - // 2) Create a linear ordering for the directed acyclic graph of preset inheritance. - // https://en.wikipedia.org/wiki/Topological_sorting - // Kahn's algorithm. - std::vector sorted; - { - // Initialize S with the set of all nodes with no incoming edge. - std::deque S; - for (const Prst &prst : presets) - if (prst.inherits.empty()) - S.emplace_back(const_cast(&prst)); - else - const_cast(&prst)->num_incoming_edges_left = prst.inherits.size(); - while (! S.empty()) { - Prst *n = S.front(); - S.pop_front(); - sorted.emplace_back(n); - for (Prst *m : n->parent_of) { - assert(m->num_incoming_edges_left > 0); - if (-- m->num_incoming_edges_left == 0) { - // We have visited all parents of m. - S.emplace_back(m); - } - } - } - if (sorted.size() < presets.size()) { - for (const Prst &prst : presets) - if (prst.num_incoming_edges_left) - BOOST_LOG_TRIVIAL(error) << "flatten_configbundle_hierarchy: The preset " << prst.name << " has cyclic dependencies"; - } - } - - // Apply the dependencies in their topological ordering. - for (Prst *prst : sorted) { - // Merge the preset nodes in their order of application. - // Iterate in a reverse order, so the last change will be placed first in merged. - for (auto it_inherits = prst->inherits.rbegin(); it_inherits != prst->inherits.rend(); ++ it_inherits) - for (auto it = (*it_inherits)->node->begin(); it != (*it_inherits)->node->end(); ++ it) - if (it->first == "renamed_from") { - // Don't inherit "renamed_from" flag, it does not make sense. The "renamed_from" flag only makes sense for a concrete preset. - if (boost::starts_with((*it_inherits)->name, "*")) - BOOST_LOG_TRIVIAL(error) << boost::format("Nonpublic intermediate preset %1% contains a \"renamed_from\" field, which is ignored") % (*it_inherits)->name; - } else if (prst->node->find(it->first) == prst->node->not_found()) - prst->node->add_child(it->first, it->second); - } - - // Remove the "internal" presets from the ptree. These presets are marked with '*'. - group_name_preset += '*'; - for (auto it_section = tree.begin(); it_section != tree.end(); ) { - if (boost::starts_with(it_section->first, group_name_preset) && it_section->first.size() > group_name_preset.size()) - // Remove the "internal" preset from the ptree. - it_section = tree.erase(it_section); - else - // Keep the preset. - ++ it_section; - } -}*/ - -// preset_bundle is set when loading user config bundles, which must not overwrite the system profiles. -/*static void flatten_configbundle_hierarchy(boost::property_tree::ptree &tree, const PresetBundle *preset_bundle) -{ - flatten_configbundle_hierarchy(tree, "print", preset_bundle ? preset_bundle->prints.system_preset_names() : std::vector()); - flatten_configbundle_hierarchy(tree, "filament", preset_bundle ? preset_bundle->filaments.system_preset_names() : std::vector()); - flatten_configbundle_hierarchy(tree, "sla_print", preset_bundle ? preset_bundle->sla_prints.system_preset_names() : std::vector()); - flatten_configbundle_hierarchy(tree, "sla_material", preset_bundle ? preset_bundle->sla_materials.system_preset_names() : std::vector()); - flatten_configbundle_hierarchy(tree, "printer", preset_bundle ? preset_bundle->printers.system_preset_names() : std::vector()); -}*/ - -// Load a config bundle file, into presets and store the loaded presets into separate files -// of the local configuration directory. -/*std::pair PresetBundle::load_configbundle( - const std::string &path, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule) -{ - // Enable substitutions for user config bundle, throw an exception when loading a system profile. - ConfigSubstitutionContext substitution_context { compatibility_rule }; - PresetsConfigSubstitutions substitutions; - - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(" enter, path %1%, compatibility_rule %2%")%path.c_str()%compatibility_rule; - if (flags.has(LoadConfigBundleAttribute::ResetUserProfile) || flags.has(LoadConfigBundleAttribute::LoadSystem)) - // Reset this bundle, delete user profile files if SaveImported. - this->reset(flags.has(LoadConfigBundleAttribute::SaveImported)); - - // 1) Read the complete config file into a boost::property_tree. - namespace pt = boost::property_tree; - pt::ptree tree; - boost::nowide::ifstream ifs(path); - try { - pt::read_ini(ifs, tree); - } catch (const boost::property_tree::ini_parser::ini_parser_error &err) { - throw Slic3r::RuntimeError(format("Failed loading config bundle \"%1%\"\nError: \"%2%\" at line %3%", path, err.message(), err.line()).c_str()); - } - - const VendorProfile *vendor_profile = nullptr; - if (flags.has(LoadConfigBundleAttribute::LoadSystem) || flags.has(LoadConfigBundleAttribute::LoadVendorOnly)) { - auto vp = VendorProfile::from_ini(tree, path); - if (vp.models.size() == 0) { - BOOST_LOG_TRIVIAL(error) << boost::format("Vendor bundle: `%1%`: No printer model defined.") % path; - return std::make_pair(PresetsConfigSubstitutions{}, 0); - } else if (vp.num_variants() == 0) { - BOOST_LOG_TRIVIAL(error) << boost::format("Vendor bundle: `%1%`: No printer variant defined") % path; - return std::make_pair(PresetsConfigSubstitutions{}, 0); - } - vendor_profile = &this->vendors.insert({vp.id, vp}).first->second; - } - - //BBS: add config related logs - if (vendor_profile) - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", loaded vendor profile, name %1%, id %2%, version %3%")%vendor_profile->name%vendor_profile->id%vendor_profile->config_version.to_string(); - - if (flags.has(LoadConfigBundleAttribute::LoadVendorOnly)) - return std::make_pair(PresetsConfigSubstitutions{}, 0); - - // 1.5) Flatten the config bundle by applying the inheritance rules. Internal profiles (with names starting with '*') are removed. - // If loading a user config bundle, do not flatten with the system profiles, but keep the "inherits" flag intact. - flatten_configbundle_hierarchy(tree, flags.has(LoadConfigBundleAttribute::LoadSystem) ? nullptr : this); - - // 2) Parse the property_tree, extract the active preset names and the profiles, save them into local config files. - // Parse the obsolete preset names, to be deleted when upgrading from the old configuration structure. - std::vector loaded_prints; - std::vector loaded_filaments; - std::vector loaded_sla_prints; - std::vector loaded_sla_materials; - std::vector loaded_printers; - std::vector loaded_physical_printers; - std::string active_print; - std::vector active_filaments; - std::string active_sla_print; - std::string active_sla_material; - std::string active_printer; - std::string active_physical_printer; - size_t presets_loaded = 0; - size_t ph_printers_loaded = 0; - - for (const auto §ion : tree) { - PresetCollection *presets = nullptr; - std::string preset_name; - PhysicalPrinterCollection *ph_printers = nullptr; - std::string ph_printer_name; - if (boost::starts_with(section.first, "print:")) { - presets = &this->prints; - preset_name = section.first.substr(6); - } else if (boost::starts_with(section.first, "filament:")) { - presets = &this->filaments; - preset_name = section.first.substr(9); - } else if (boost::starts_with(section.first, "sla_print:")) { - presets = &this->sla_prints; - preset_name = section.first.substr(10); - } else if (boost::starts_with(section.first, "sla_material:")) { - presets = &this->sla_materials; - preset_name = section.first.substr(13); - } else if (boost::starts_with(section.first, "printer:")) { - presets = &this->printers; - preset_name = section.first.substr(8); - } else if (boost::starts_with(section.first, "physical_printer:")) { - ph_printers = &this->physical_printers; - ph_printer_name = section.first.substr(17); - } else if (section.first == "presets") { - // Load the names of the active presets. - for (auto &kvp : section.second) { - if (kvp.first == "print") { - active_print = kvp.second.data(); - } else if (boost::starts_with(kvp.first, "filament")) { - int idx = 0; - if (kvp.first == "filament" || sscanf(kvp.first.c_str(), "filament_%d", &idx) == 1) { - if (int(active_filaments.size()) <= idx) - active_filaments.resize(idx + 1, std::string()); - active_filaments[idx] = kvp.second.data(); - } - } else if (kvp.first == "sla_print") { - active_sla_print = kvp.second.data(); - } else if (kvp.first == "sla_material") { - active_sla_material = kvp.second.data(); - } else if (kvp.first == "printer") { - active_printer = kvp.second.data(); - } else if (kvp.first == "physical_printer") { - active_physical_printer = kvp.second.data(); - } - } - } else if (section.first == "obsolete_presets") { - // Parse the names of obsolete presets. These presets will be deleted from user's - // profile directory on installation of this vendor preset. - for (auto &kvp : section.second) { - std::vector *dst = nullptr; - if (kvp.first == "print") - dst = &this->obsolete_presets.prints; - else if (kvp.first == "filament") - dst = &this->obsolete_presets.filaments; - else if (kvp.first == "sla_print") - dst = &this->obsolete_presets.sla_prints; - else if (kvp.first == "sla_material") - dst = &this->obsolete_presets.sla_materials; - else if (kvp.first == "printer") - dst = &this->obsolete_presets.printers; - if (dst) - unescape_strings_cstyle(kvp.second.data(), *dst); - } - } else if (section.first == "settings") { -#ifdef SUPPORT_AUTO_CENTER - // Load the settings. - for (auto &kvp : section.second) { - if (kvp.first == "autocenter") { - } - } -#endif - } else - // Ignore an unknown section. - continue; - if (presets != nullptr) { - // Load the print, filament or printer preset. - const DynamicPrintConfig *default_config = nullptr; - DynamicPrintConfig config; - std::string alias_name; - std::vector renamed_from; - try { - auto parse_config_section = [§ion, &alias_name, &renamed_from, &substitution_context, &path](DynamicPrintConfig &config) { - substitution_context.substitutions.clear(); - for (auto &kvp : section.second) { - if (kvp.first == "alias") - alias_name = kvp.second.data(); - else if (kvp.first == "renamed_from") { - if (! unescape_strings_cstyle(kvp.second.data(), renamed_from)) { - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The preset \"" << - section.first << "\" contains invalid \"renamed_from\" key, which is being ignored."; - } - } - // Throws on parsing error. For system presets, no substituion is being done, but an exception is thrown. - config.set_deserialize(kvp.first, kvp.second.data(), substitution_context); - } - }; - if (presets == &this->printers) { - // Select the default config based on the printer_technology field extracted from kvp. - DynamicPrintConfig config_src; - parse_config_section(config_src); - default_config = &presets->default_preset_for(config_src).config; - config = *default_config; - config.apply(config_src); - } else { - default_config = &presets->default_preset().config; - config = *default_config; - parse_config_section(config); - } - } catch (const ConfigurationError &e) { - throw ConfigurationError(format("Invalid configuration bundle \"%1%\", section [%2%]: ", path, section.first) + e.what()); - } - Preset::normalize(config); - // Report configuration fields, which are misplaced into a wrong group. - std::string incorrect_keys = Preset::remove_invalid_keys(config, *default_config); - if (! incorrect_keys.empty()) - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << - section.first << "\" contains the following incorrect keys: " << incorrect_keys << ", which were removed"; - if (flags.has(LoadConfigBundleAttribute::LoadSystem) && presets == &printers) { - // Filter out printer presets, which are not mentioned in the vendor profile. - // These presets are considered not installed. - auto printer_model = config.opt_string("printer_model"); - if (printer_model.empty()) { - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << - section.first << "\" defines no printer model, it will be ignored."; - continue; - } - auto printer_variant = config.opt_string("printer_variant"); - if (printer_variant.empty()) { - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << - section.first << "\" defines no printer variant, it will be ignored."; - continue; - } - auto it_model = std::find_if(vendor_profile->models.cbegin(), vendor_profile->models.cend(), - [&](const VendorProfile::PrinterModel &m) { return m.id == printer_model; } - ); - if (it_model == vendor_profile->models.end()) { - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << - section.first << "\" defines invalid printer model \"" << printer_model << "\", it will be ignored."; - continue; - } - auto it_variant = it_model->variant(printer_variant); - if (it_variant == nullptr) { - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << - section.first << "\" defines invalid printer variant \"" << printer_variant << "\", it will be ignored."; - continue; - } - const Preset *preset_existing = presets->find_preset(section.first, false); - if (preset_existing != nullptr) { - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The printer preset \"" << - section.first << "\" has already been loaded from another Config Bundle."; - continue; - } - } else if (! flags.has(LoadConfigBundleAttribute::LoadSystem)) { - // This is a user config bundle. - const Preset *existing = presets->find_preset(preset_name, false); - if (existing != nullptr) { - if (existing->is_system) { - assert(existing->vendor != nullptr); - BOOST_LOG_TRIVIAL(error) << "Error in a user provided Config Bundle \"" << path << "\": The " << presets->name() << " preset \"" << - existing->name << "\" is a system preset of vendor " << existing->vendor->name << " and it will be ignored."; - continue; - } else { - assert(existing->vendor == nullptr); - BOOST_LOG_TRIVIAL(trace) << "A " << presets->name() << " preset \"" << existing->name << "\" was overwritten with a preset from user Config Bundle \"" << path << "\""; - } - } else { - BOOST_LOG_TRIVIAL(trace) << "A new " << presets->name() << " preset \"" << preset_name << "\" was imported from user Config Bundle \"" << path << "\""; - } - } - // Decide a full path to this .ini file. - auto file_name = boost::algorithm::iends_with(preset_name, ".json") ? preset_name : preset_name + ".json"; - //BBS: change directoties by design - auto file_path = (boost::filesystem::path(data_dir()) /PRESET_SYSTEM_DIR/ presets->section_name() / file_name).make_preferred(); - // Load the preset into the list of presets, save it to disk. - Preset &loaded = presets->load_preset(file_path.string(), preset_name, std::move(config), false); - if (flags.has(LoadConfigBundleAttribute::SaveImported)) - loaded.save(nullptr); - if (flags.has(LoadConfigBundleAttribute::LoadSystem)) { - loaded.is_system = true; - loaded.vendor = vendor_profile; - } - - // Derive the profile logical name aka alias from the preset name if the alias was not stated explicitely. - if (alias_name.empty()) { - size_t end_pos = preset_name.find_first_of("@"); - if (end_pos != std::string::npos) { - alias_name = preset_name.substr(0, end_pos); - if (renamed_from.empty()) - // Add the preset name with the '@' character removed into the "renamed_from" list. - renamed_from.emplace_back(alias_name + preset_name.substr(end_pos + 1)); - boost::trim_right(alias_name); - } - } - if (alias_name.empty()) - loaded.alias = preset_name; - else - loaded.alias = std::move(alias_name); - loaded.renamed_from = std::move(renamed_from); - if (! substitution_context.empty()) - substitutions.push_back({ - preset_name, presets->type(), PresetConfigSubstitutions::Source::ConfigBundle, - std::string(), std::move(substitution_context.substitutions) }); - ++ presets_loaded; - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", got preset %1%, from %2%")%loaded.name %path; - } - - if (ph_printers != nullptr) { - // Load the physical printer - const DynamicPrintConfig& default_config = ph_printers->default_config(); - DynamicPrintConfig config = default_config; - - substitution_context.substitutions.clear(); - try { - for (auto& kvp : section.second) - config.set_deserialize(kvp.first, kvp.second.data(), substitution_context); - } catch (const ConfigurationError &e) { - throw ConfigurationError(format("Invalid configuration bundle \"%1%\", section [%2%]: ", path, section.first) + e.what()); - } - - // Report configuration fields, which are misplaced into a wrong group. - std::string incorrect_keys = Preset::remove_invalid_keys(config, default_config); - if (!incorrect_keys.empty()) - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The physical printer \"" << - section.first << "\" contains the following incorrect keys: " << incorrect_keys << ", which were removed"; - - const PhysicalPrinter* ph_printer_existing = ph_printers->find_printer(ph_printer_name, false); - if (ph_printer_existing != nullptr) { - BOOST_LOG_TRIVIAL(error) << "Error in a Vendor Config Bundle \"" << path << "\": The physical printer \"" << - section.first << "\" has already been loaded from another Config Bundle."; - continue; - } - - // Decide a full path to this .ini file. - //BBS: change directoties by design - auto file_name = boost::algorithm::iends_with(ph_printer_name, ".json") ? ph_printer_name : ph_printer_name + ".json"; - auto file_path = (boost::filesystem::path(data_dir())/PRESET_SYSTEM_DIR/"physical_printer" / file_name).make_preferred(); - // Load the preset into the list of presets, save it to disk. - ph_printers->load_printer(file_path.string(), ph_printer_name, std::move(config), false, flags.has(LoadConfigBundleAttribute::SaveImported)); - if (! substitution_context.empty()) - substitutions.push_back({ - ph_printer_name, Preset::TYPE_PHYSICAL_PRINTER, PresetConfigSubstitutions::Source::ConfigBundle, - std::string(), std::move(substitution_context.substitutions) }); - ++ ph_printers_loaded; - } - } - - // 3) Activate the presets and physical printer if any exists. - if (! flags.has(LoadConfigBundleAttribute::LoadSystem)) { - if (! active_print.empty()) - prints.select_preset_by_name(active_print, true); - if (! active_sla_print.empty()) - sla_prints.select_preset_by_name(active_sla_print, true); - if (! active_sla_material.empty()) - sla_materials.select_preset_by_name(active_sla_material, true); - if (! active_printer.empty()) - printers.select_preset_by_name(active_printer, true); - if (! active_physical_printer.empty()) - physical_printers.select_printer(active_physical_printer, active_printer); - // Activate the first filament preset. - if (! active_filaments.empty() && ! active_filaments.front().empty()) - filaments.select_preset_by_name(active_filaments.front(), true); - this->update_multi_material_filament_presets(); - for (size_t i = 0; i < std::min(this->filament_presets.size(), active_filaments.size()); ++ i) - this->filament_presets[i] = filaments.find_preset(active_filaments[i], true)->name; - this->update_compatible(PresetSelectCompatibleType::Never); - } - - //BBS: add config related logs - BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << boost::format(", finished, presets_loaded %1%, ph_printers_loaded %2%")%presets_loaded %ph_printers_loaded; - return std::make_pair(std::move(substitutions), presets_loaded + ph_printers_loaded); -}*/ - //BBS: Load a config bundle file from json std::pair PresetBundle::load_vendor_configs_from_json( const std::string &path, const std::string &vendor_name, LoadConfigBundleAttributes flags, ForwardCompatibilitySubstitutionRule compatibility_rule, const PresetBundle* base_bundle) @@ -4002,179 +3336,6 @@ void PresetBundle::update_compatible(PresetSelectCompatibleType select_other_pri BOOST_LOG_TRIVIAL(info) << boost::format("update_compatibility for all presets exit"); } -//BBS: add a API to dump current configbundle as default configbundle -/*void PresetBundle::export_current_configbundle(const std::string &path) -{ - boost::nowide::ofstream c; - c.open(path, std::ios::out | std::ios::trunc); - - c << "# generate the configbundle for BBL" << std::endl; - - const Preset& print_selected_preset = this->prints.get_selected_preset(); - const Preset* system_print = NULL; - const Preset& filament_selected_preset = this->filaments.get_selected_preset(); - const Preset* system_filament = NULL; - const Preset& printer_selected_preset = this->printers.get_selected_preset(); - const Preset* system_printer = NULL; - - // Export the print - std::string print_bbl = "@BBL-3DP"; - size_t pos = print_selected_preset.name.find(print_bbl); - if (std::string::npos != pos) - { - std::string system_print_name = print_selected_preset.name.substr(0, pos + print_bbl.size()); - system_print = this->prints.find_preset(system_print_name); - if (system_print) - { - c << std::endl << "[" << this->prints.section_name() << ":" << system_print->name << "]" << std::endl; - for (const std::string &opt_key : print_selected_preset.config.keys()) - { - if (!opt_key.compare("inherits")) - continue; - const ConfigOption *option1 = system_print->config.option(opt_key); - const ConfigOption *option2 = print_selected_preset.config.option(opt_key); - if (option1 && option2 && (*option1 != *option2)) - c << opt_key << " = " << print_selected_preset.config.opt_serialize(opt_key) << std::endl; - } - c << std::endl; - } - } - - // Export the filament - std::string filament_bbl = "@BBL-3DP"; - pos = filament_selected_preset.name.find(filament_bbl); - if (std::string::npos != pos) - { - std::string system_filamant_name = filament_selected_preset.name.substr(0, pos + filament_bbl.size()); - system_filament = this->filaments.find_preset(system_filamant_name); - if (system_filament) - { - c << std::endl << "[" << this->filaments.section_name() << ":" << system_filament->name << "]" << std::endl; - for (const std::string &opt_key : filament_selected_preset.config.keys()) - { - if (!opt_key.compare("inherits")) - continue; - const ConfigOption *option1 = system_filament->config.option(opt_key); - const ConfigOption *option2 = filament_selected_preset.config.option(opt_key); - if (option1 && option2 && (*option1 != *option2)) - c << opt_key << " = " << filament_selected_preset.config.opt_serialize(opt_key) << std::endl; - } - c << std::endl; - } - } - - // Export the printer - std::string printer_bbl = "BBL-3DP-001"; - pos = printer_selected_preset.name.find(printer_bbl); - if (std::string::npos != pos) - { - std::string system_printer_name = printer_selected_preset.name.substr(0, pos + printer_bbl.size()); - system_printer = this->printers.find_preset(system_printer_name); - if (system_printer) - { - c << std::endl << "[" << this->printers.section_name() << ":" << system_printer->name << "]" << std::endl; - for (const std::string &opt_key : printer_selected_preset.config.keys()) - { - c << opt_key << " = " << printer_selected_preset.config.opt_serialize(opt_key) << std::endl; - } - c << std::endl; - } - } - - c.close(); -}*/ - - -//void PresetBundle::export_configbundle(const std::string &path, bool export_system_settings, bool export_physical_printers/* = false*/) -//{ -// boost::nowide::ofstream c; -// c.open(path, std::ios::out | std::ios::trunc); -// -// // Put a comment at the first line including the time stamp and Slic3r version. -// c << "# " << Slic3r::header_slic3r_generated() << std::endl; -// -// // Export the print, filament and printer profiles. -// -// for (const PresetCollection *presets : { -// (const PresetCollection*)&this->prints, (const PresetCollection*)&this->filaments, -// (const PresetCollection*)&this->sla_prints, (const PresetCollection*)&this->sla_materials, -// (const PresetCollection*)&this->printers }) { -// for (const Preset &preset : (*presets)()) { -// //BBS: add project embedded preset logic and refine is_external -// if (preset.is_default || preset.is_project_embedded || (preset.is_system && ! export_system_settings)) -// //if (preset.is_default || preset.is_external || (preset.is_system && ! export_system_settings)) -// // Only export the common presets, not external files or the default preset. -// continue; -// c << std::endl << "[" << presets->section_name() << ":" << preset.name << "]" << std::endl; -// for (const std::string &opt_key : preset.config.keys()) -// c << opt_key << " = " << preset.config.opt_serialize(opt_key) << std::endl; -// } -// } -// -// if (export_physical_printers) { -// for (const PhysicalPrinter& ph_printer : this->physical_printers) { -// c << std::endl << "[physical_printer:" << ph_printer.name << "]" << std::endl; -// for (const std::string& opt_key : ph_printer.config.keys()) -// c << opt_key << " = " << ph_printer.config.opt_serialize(opt_key) << std::endl; -// } -// } -// -// // Export the names of the active presets. -// c << std::endl << "[presets]" << std::endl; -// c << "print = " << this->prints.get_selected_preset_name() << std::endl; -// c << "sla_print = " << this->sla_prints.get_selected_preset_name() << std::endl; -// c << "sla_material = " << this->sla_materials.get_selected_preset_name() << std::endl; -// c << "printer = " << this->printers.get_selected_preset_name() << std::endl; -// for (size_t i = 0; i < this->filament_presets.size(); ++ i) { -// char suffix[64]; -// if (i > 0) -// sprintf(suffix, "_%d", (int)i); -// else -// suffix[0] = 0; -// c << "filament" << suffix << " = " << this->filament_presets[i] << std::endl; -// } -// -// if (export_physical_printers && this->physical_printers.get_selected_idx() >= 0) -// c << "physical_printer = " << this->physical_printers.get_selected_printer_name() << std::endl; -//#if 0 -// // Export the following setting values from the provided setting repository. -// static const char *settings_keys[] = { "autocenter" }; -// c << "[settings]" << std::endl; -// for (size_t i = 0; i < sizeof(settings_keys) / sizeof(settings_keys[0]); ++ i) -// c << settings_keys[i] << " = " << settings.serialize(settings_keys[i]) << std::endl; -//#endif -// -// c.close(); -//} - -//BBS: add export system preset functions -/*void PresetBundle::export_system_configs(const std::string &path) -{ - // Export the print, filament and printer profiles. - for (const PresetCollection *presets : { - (const PresetCollection*)&this->prints, (const PresetCollection*)&this->filaments, - (const PresetCollection*)&this->sla_prints, (const PresetCollection*)&this->sla_materials, - (const PresetCollection*)&this->printers }) { - for (const Preset &preset : (*presets)()) { - if (preset.is_system) - { - // Only export the system presets - boost::nowide::ofstream c; - std::string file_path = path + std::string("\\") + preset.name; - - c.open(file_path, std::ios::out | std::ios::trunc); - - // Put a comment at the first line including the time stamp and Slic3r version. - c << "# " << Slic3r::header_slic3r_generated() << std::endl; - //c << std::endl << "[" << presets->section_name() << ":" << preset.name << "]" << std::endl; - for (const std::string &opt_key : preset.config.keys()) - c << opt_key << " = " << preset.config.opt_serialize(opt_key) << std::endl; - - c.close(); - } - } - } -}*/ std::vector PresetBundle::export_current_configs(const std::string & path, std::function override_confirm, diff --git a/src/slic3r/GUI/WebGuideDialog.cpp b/src/slic3r/GUI/WebGuideDialog.cpp index db0451c475..479726a9ff 100644 --- a/src/slic3r/GUI/WebGuideDialog.cpp +++ b/src/slic3r/GUI/WebGuideDialog.cpp @@ -580,13 +580,6 @@ void GuideFrame::OnError(wxWebViewEvent &evt) void GuideFrame::OnScriptResponseMessage(wxCommandEvent &WXUNUSED(evt)) { - // if (!m_response_js.empty()) - //{ - // RunScript(m_response_js); - //} - - // RunScript("This is a message to Web!"); - // RunScript("postMessage(\"AABBCCDD\");"); } bool GuideFrame::IsFirstUse() @@ -602,24 +595,6 @@ bool GuideFrame::IsFirstUse() return true; } -/*int GuideFrame::CopyDir(const boost::filesystem::path &from_dir, const boost::filesystem::path &to_dir) -{ - if (!boost::filesystem::is_directory(from_dir)) return -1; - // i assume to_dir.parent surely exists - if (!boost::filesystem::is_directory(to_dir)) boost::filesystem::create_directory(to_dir); - for (auto &dir_entry : boost::filesystem::directory_iterator(from_dir)) { - if (!boost::filesystem::is_directory(dir_entry.path())) { - std::string em; - CopyFileResult cfr = copy_file(dir_entry.path().string(), (to_dir / dir_entry.path().filename()).string(), em, false); - if (cfr != SUCCESS) { BOOST_LOG_TRIVIAL(error) << "Error when copying files from " << from_dir << " to " << to_dir << ": " << em; } - } else { - CopyDir(dir_entry.path(), to_dir / dir_entry.path().filename()); - } - } - - return 0; -}*/ - int GuideFrame::SaveProfile() { // SoftFever: don't collect info @@ -637,77 +612,6 @@ int GuideFrame::SaveProfile() m_MainPtr->app_config->save(); - //Load BBS Conf - /*wxString strConfPath = wxGetApp().app_config->config_path(); - json jCfg; - std::ifstream(w2s(strConfPath)) >> jCfg; - - //model - jCfg["models"] = json::array(); - int nM = m_ProfileJson["model"].size(); - int nModelChoose = 0; - for (int m = 0; m < nM; m++) - { - json amodel = m_ProfileJson["model"][m]; - - amodel["nozzle_diameter"] = amodel["nozzle_selected"]; - amodel.erase("nozzle_selected"); - amodel.erase("preview"); - amodel.erase("sub_path"); - amodel.erase("cover"); - amodel.erase("materials"); - - std::string ss = amodel["nozzle_diameter"]; - if (ss.compare("") != 0) { - nModelChoose++; - jCfg["models"].push_back(amodel); - } - } - if (nModelChoose == 0) - jCfg.erase("models"); - - if (nModelChoose > 0) { - // filament - jCfg["filaments"] = json::array(); - for (auto it = m_ProfileJson["filament"].begin(); it != m_ProfileJson["filament"].end(); ++it) { - if (it.value()["selected"] == 1) { jCfg["filaments"].push_back(it.key()); } - } - - // Preset - jCfg["presets"]["filaments"] = json::array(); - jCfg["presets"]["filaments"].push_back(jCfg["filaments"][0]); - - std::string PresetMachine = m_ProfileJson["machine"][0]["name"]; - jCfg["presets"]["machine"] = PresetMachine; - - int nTotal = m_ProfileJson["process"].size(); - int nSet = nTotal / 2; - if (nSet > 0) nSet--; - - std::string sMode = m_ProfileJson["process"][nSet]["name"]; - jCfg["presets"]["process"] = sMode; - - } else { - jCfg["presets"]["filaments"] = json::array(); - jCfg["presets"]["filaments"].push_back("Default Filament"); - - jCfg["presets"]["machine"] = "Default Printer"; - - jCfg["presets"]["process"] = "Default Setting"; - } - - std::string sOut = jCfg.dump(4, ' ', false); - - std::ofstream output_file(w2s(strConfPath)); - output_file << sOut; - output_file.close(); - - //Copy Profiles - if (bbl_bundle_rsrc) - { - CopyDir(rsrc_vendor_dir,vendor_dir); - }*/ - std::string strAll = m_ProfileJson.dump(-1, ' ', false, json::error_handler_t::ignore); BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << "before save to app_config: "<< std::endl<path().string()); + loaded_vendors.insert(w2s(strVendor)); } } @@ -1228,185 +1137,6 @@ void StringReplace(string &strBase, string strSrc, string strDes) } -//int GuideFrame::LoadProfileFamily(std::string strVendor, std::string strFilePath) -//{ -// //wxString strFolder = strFilePath.BeforeLast(boost::filesystem::path::preferred_separator); -// boost::filesystem::path file_path(strFilePath); -// boost::filesystem::path vendor_dir = boost::filesystem::absolute(file_path.parent_path()/ strVendor).make_preferred(); -// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", vendor path %1%.")% vendor_dir.string(); -// try { -// -// //wxLogMessage("GUIDE: json_path1 %s", w2s(strFilePath)); -// -// std::string contents; -// LoadFile(strFilePath, contents); -// //wxLogMessage("GUIDE: json_path1 content: %s", contents); -// json jLocal=json::parse(contents); -// //wxLogMessage("GUIDE: json_path1 Loaded"); -// -// // BBS:models -// json pmodels = jLocal["machine_model_list"]; -// int nsize = pmodels.size(); -// -// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% machine models")%nsize; -// -// for (int n = 0; n < nsize; n++) { -// json OneModel = pmodels.at(n); -// -// OneModel["model"] = OneModel["name"]; -// OneModel.erase("name"); -// -// std::string s1 = OneModel["model"]; -// std::string s2 = OneModel["sub_path"]; -// -// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred(); -// std::string sub_file = sub_path.string(); -// -// //wxLogMessage("GUIDE: json_path2 %s", w2s(ModelFilePath)); -// LoadFile(sub_file, contents); -// //wxLogMessage("GUIDE: json_path2 content: %s", contents); -// json pm=json::parse(contents); -// //wxLogMessage("GUIDE: json_path2 loaded"); -// -// OneModel["vendor"] = strVendor; -// std::string NozzleOpt = pm["nozzle_diameter"]; -// StringReplace(NozzleOpt, " ", ""); -// OneModel["nozzle_diameter"] = NozzleOpt; -// OneModel["materials"] = pm["default_materials"]; -// -// //wxString strCoverPath = wxString::Format("%s\\%s\\%s_cover.png", strFolder, strVendor, std::string(s1.mb_str())); -// std::string cover_file = s1+"_cover.png"; -// boost::filesystem::path cover_path = boost::filesystem::absolute(vendor_dir / cover_file).make_preferred(); -// OneModel["cover"] = cover_path.string(); -// -// OneModel["nozzle_selected"] = ""; -// -// m_ProfileJson["model"].push_back(OneModel); -// } -// -// // BBS:Machine -// json pmachine = jLocal["machine_list"]; -// nsize = pmachine.size(); -// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% machines")%nsize; -// for (int n = 0; n < nsize; n++) { -// json OneMachine = pmachine.at(n); -// -// std::string s1 = OneMachine["name"]; -// std::string s2 = OneMachine["sub_path"]; -// -// //wxString ModelFilePath = wxString::Format("%s\\%s\\%s", strFolder, strVendor, s2); -// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred(); -// std::string sub_file = sub_path.string(); -// LoadFile(sub_file, contents); -// json pm = json::parse(contents); -// -// std::string strInstant = pm["instantiation"]; -// if (strInstant.compare("true") == 0) { -// OneMachine["model"] = pm["printer_model"]; -// -// m_ProfileJson["machine"].push_back(OneMachine); -// } -// } -// -// // BBS:Filament -// json pFilament = jLocal["filament_list"]; -// nsize = pFilament.size(); -// -// int nFalse = 0; -// int nModel = 0; -// int nFinish = 0; -// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% filaments")%nsize; -// for (int n = 0; n < nsize; n++) { -// json OneFF = pFilament.at(n); -// -// std::string s1 = OneFF["name"]; -// std::string s2 = OneFF["sub_path"]; -// -// if (!m_ProfileJson["filament"].contains(s1)) -// { -// //wxString ModelFilePath = wxString::Format("%s\\%s\\%s", strFolder, strVendor, s2); -// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred(); -// std::string sub_file = sub_path.string(); -// LoadFile(sub_file, contents); -// json pm = json::parse(contents); -// -// std::string strInstant = pm["instantiation"]; -// if (strInstant == "true") { -// std::string sV; -// std::string sT; -// -// int nRet = GetFilamentInfo(sub_file, sV, sT); -// if (nRet != 0) continue; -// -// OneFF["vendor"] = sV; -// OneFF["type"] = sT; -// -// OneFF["models"] = ""; -// OneFF["selected"] = 0; -// } -// else -// continue; -// -// } else { -// OneFF = m_ProfileJson["filament"][s1]; -// } -// -// std::string vModel = ""; -// int nm = m_ProfileJson["model"].size(); -// int bFind = 0; -// for (int m = 0; m < nm; m++) { -// std::string strFF = m_ProfileJson["model"][m]["materials"]; -// strFF = (boost::format(";%1%;")%strFF).str(); -// std::string strTT = (boost::format(";%1%;")%s1).str(); -// if (strFF.find(strTT) != std::string::npos) { -// std::string sModel = m_ProfileJson["model"][m]["model"]; -// -// vModel = (boost::format("%1%[%2%]")%vModel %sModel).str(); -// bFind = 1; -// } -// } -// -// OneFF["models"] = vModel; -// -// m_ProfileJson["filament"][s1] = OneFF; -// } -// -// //process -// json pProcess = jLocal["process_list"]; -// nsize = pProcess.size(); -// BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format(", got %1% processes")%nsize; -// for (int n = 0; n < nsize; n++) { -// json OneProcess = pProcess.at(n); -// -// std::string s2 = OneProcess["sub_path"]; -// //wxString ModelFilePath = wxString::Format("%s\\%s\\%s", strFolder, strVendor, s2); -// boost::filesystem::path sub_path = boost::filesystem::absolute(vendor_dir / s2).make_preferred(); -// std::string sub_file = sub_path.string(); -// LoadFile(sub_file, contents); -// json pm = json::parse(contents); -// -// std::string bInstall = pm["instantiation"]; -// if (bInstall == "true") -// { -// m_ProfileJson["process"].push_back(OneProcess); -// } -// } -// -// } -// catch(nlohmann::detail::parse_error &err) { -// BOOST_LOG_TRIVIAL(error) << __FUNCTION__<< ": parse "< Date: Wed, 22 Jan 2025 23:59:46 +0800 Subject: [PATCH 7/8] Fix a typo --- .../OrcaFilamentLibrary/filament/Generic ASA @System.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json b/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json index a1a3b7dff1..a271c38eb0 100644 --- a/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json +++ b/resources/profiles/OrcaFilamentLibrary/filament/Generic ASA @System.json @@ -5,7 +5,7 @@ "name": "Generic ASA @System", "from": "system", "instantiation": "true", - "renamed_from": "My Generic ADA", + "renamed_from": "My Generic ASA", "inherits": "fdm_filament_asa", "compatible_printers": [] } \ No newline at end of file From ecb0e7ea682eb2f224ef5a8665aacced7d770a0b Mon Sep 17 00:00:00 2001 From: SoftFever Date: Fri, 24 Jan 2025 21:58:52 +0800 Subject: [PATCH 8/8] Update WIKI --- doc/Home.md | 1 + doc/How-to-create-profiles.md | 180 ++++++++++++++++++ .../filament/Generic ABS @MyToolChanger.json | 7 - .../filament/Generic ASA @MyToolChanger.json | 7 - .../filament/Generic PA @MyToolChanger.json | 10 - .../Generic PA-CF @MyToolChanger.json | 13 -- .../filament/Generic PC @MyToolChanger.json | 6 - .../filament/Generic PETG @MyToolChanger.json | 36 ---- .../filament/Generic PLA @MyToolChanger.json | 9 - .../Generic PLA-CF @MyToolChanger.json | 12 -- .../filament/Generic PVA @MyToolChanger.json | 42 +++- 11 files changed, 214 insertions(+), 109 deletions(-) create mode 100644 doc/How-to-create-profiles.md diff --git a/doc/Home.md b/doc/Home.md index 998edbe409..0abdd8fc01 100644 --- a/doc/Home.md +++ b/doc/Home.md @@ -36,3 +36,4 @@ The guide below takes you through the key calibration tests in Orca - flow rate, - [How to build Orca Slicer](./How-to-build) - [Localization and translation guide](Localization_guide) - [Developer Reference](https://github.com/SoftFever/OrcaSlicer/blob/main/doc/developer-reference/Home.md) +- [How to create profiles](./How-to-create-profiles) \ No newline at end of file diff --git a/doc/How-to-create-profiles.md b/doc/How-to-create-profiles.md new file mode 100644 index 0000000000..3161a71633 --- /dev/null +++ b/doc/How-to-create-profiles.md @@ -0,0 +1,180 @@ +# Guide: Develop Profiles for OrcaSlicer + +## Introduction +This guide will help you develop profiles for OrcaSlicer. + +## High-level Overview +OrcaSlicer uses JSON files to store profiles. There are four types of profiles: +1. Printer model (type `machine_model`). Example: `Orca 3D Fuse1.json` +2. Printer variant (type `machine`). Example: `Orca 3D Fuse1 0.2 nozzle.json` +3. Filament (type `filament`). Example: `Generic PLA @Orca 3D Fuse1@.json` +4. Process (type `process`). Example: `0.10mm Standard @Orca 3D Fuse1 0.2.json` + +Additionally, there is an overall meta file for each vendor (`Orca 3D.json`). + +For easier understanding, let's consider a scenario with a printer manufacturer called `Orca 3D`. The manufacturer offers one printer model called `Fuse 1`, which supports 0.2/0.4/0.6/0.8mm nozzles and common market filaments. + +In this case: +- Vendor profile: `Orca 3D` +- Printer profile: `Orca 3D Fuse1` +- Printer variant profile: `Orca 3D Fuse1 0.4 nozzle` +- Filament profile: `Generic PLA @Orca 3D Fuse1@` +- Process profile: `0.20mm Standard @Orca 3D Fuse1 0.4` + +The profile name should be same as the filename without the `.json` extension in principal. +Naming conventions: +1. Vendor profile: `vendor_name.json` +2. Printer profile: `vendor_name` + `printer_name` + `.json` +3. Printer variant profile: `vendor_name` + `printer_variant_name` + `.json` (where `printer_variant_name` typically includes `printer_name` + `nozzle_diameter`) +4. Filament profile: `filament_vendor_name` + `filament_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json` +5. Process profile: `layer_height` + `preset_name` + " @" + `vendor_name` + `printer_name`/`printer_variant_name` + `.json` (`preset_name` typically includes "standard," "fine," "fast," "draft," etc.) + + +A typical file structure for a vendor: +``` +resources\profiles\ + - Orca 3D.json + - Orca 3D\ + - machine\ + - Orca 3D Fuse1.json + - Orca 3D Fuse1 0.2 nozzle.json + - Orca 3D Fuse1 0.4 nozzle.json + - process\ + - 0.10mm Standard @Orca 3D Fuse1 0.2.json + - 0.20mm Standard @Orca 3D Fuse1 0.4.json + - filament\ + - Generic PLA @Orca 3D Fuse1@.json +``` + + +**NOTE 1**: Use short vendor names in filenames to avoid excessive length. +**NOTE 2**: Filament profiles are **optional**. Create them only if the vendor has specifically tuned profiles for the given printer. See [Filament profiles](#filament-profiles) for details. + +## Filament Profiles +OrcaSlicer features a global filament library called `OrcaFilamentLibrary`, which is automatically available for all printers. It includes generic filaments like `Generic PLA @System` and `Generic ABS @System` etc. + +Printer vendors can override specific filaments in the global library for certain printer models by creating new filament profiles. + +Relationship diagram: +```mermaid +graph TD; + OrcaFilamentLibrary-->Orca_3D_filament; + OrcaFilamentLibrary-->Vendor_A_filament; + OrcaFilamentLibrary-->Vendor_B_filament; +``` + +**NOTE**: Create new filament profiles only if you have truly specifically tuned the filament for the given printer. Otherwise, use the global library. The global library has a better chance to receive optimizations and updates from OrcaSlicer contributors, which will benefit users of all printers. + +### Adding Filament Profiles to the Global Library +In this section, we will discuss how to add a new filament profile into the global library. +If you want to add a new generic profile into the global library, you need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it. +The following sample JSON file shows how to create a new generic filament profile `Generic PLA-GF @System` in the global library. + +1. The first step is to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament` folder. The file name should be `Generic PLA-GF @System.json`. Please note that we leave the `compatible_printers` field empty so that it is available for all printers. + +```json +{ + "type": "filament", + "filament_id": "GFL99", + "setting_id": "GFSA05", + "name": "Generic PLA-GF @System", + "from": "system", + "instantiation": "true", + "inherits": "fdm_filament_pla", + "filament_type": ["PLA-GF"], + "filament_flow_ratio": [ + "0.96" + ], + "compatible_printers": [] +} +``` + +2. Register the profile in `resources\profiles\OrcaFilamentLibrary.json`: + +```json +{ + "name": "OrcaFilamentLibrary", + "version": "02.02.00.04", + "force_update": "0", + "description": "Orca Filament Library", + "filament_list": [ + // ... + { + "name": "Generic PLA-GF @System", + "sub_path": "filament/Generic PLA-GF @System.json" + } + ] +} +``` + +3. The last step is to validate the newly added filament profiles. You can run OrcaSlicer to verify if the filament you just added is available and usable. You can also use the [Orca profile validator](https://github.com/SoftFever/Orca_tools/releases/tag/1) tool to help debug any errors. **NOTE**: You need to delete the `%appdata%/OrcaSlicer/system` folder to force OrcaSlicer to reload your lastest changes. + +The process is the same if you want to add a new brand filament profile into the global library. You need to create a new file in the `resources\profiles\OrcaFilamentLibrary\filament\brand_name` folder. The only difference is that you should put the file into the brand's own subfolder.`resources\profiles\OrcaFilamentLibrary\filament\brand_name`. + +### Adding Filament Profiles to Printer Vendor Library +In this section, we will discuss how to add a new filament profile for a certain vendor. +If you want to add a new filament profile, whether it's a brand new profile or a specialized version of a global filament profile for a given printer, you need to create a new file in the `resources\profiles\vendor_name\filament` folder. If a base type already exists in the global library, you can use this file as a base profile by inheriting it. +Below is a sample JSON file showing how to create a specialized `Generic ABS` filament profile for the ToolChanger printer. +Please note that here we must leave the compatible_printers field non-empty, unlike in the global library. + +```json +{ + "type": "filament", + "setting_id": "GFB99_MTC_0", + "name": "Generic ABS @MyToolChanger", + "from": "system", + "instantiation": "true", + "inherits": "Generic ABS @System", + "filament_cooling_final_speed": [ + "3.5" + ], + "filament_cooling_initial_speed": [ + "10" + ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], + "compatible_printers": [ + "MyToolChanger 0.4 nozzle", + "MyToolChanger 0.2 nozzle", + "MyToolChanger 0.6 nozzle", + "MyToolChanger 0.8 nozzle" + ] +} +``` + +## Process Profiles +WIP... + +## Printer Profiles +WIP... + +## Printer Variant Profiles +WIP... \ No newline at end of file diff --git a/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json b/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json index d1eb791459..23238a1ea2 100644 --- a/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic ABS @MyToolChanger.json @@ -1,18 +1,11 @@ { "type": "filament", - "filament_id": "GFB99", "setting_id": "GFB99_MTC_0", "name": "Generic ABS @MyToolChanger", "renamed_from": "My Generic ABS @MyToolChanger", "from": "system", "instantiation": "true", "inherits": "Generic ABS @System", - "filament_flow_ratio": [ - "0.926" - ], - "filament_max_volumetric_speed": [ - "12" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json index fa45cde5db..28f13fc7c2 100644 --- a/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic ASA @MyToolChanger.json @@ -1,18 +1,11 @@ { "type": "filament", - "filament_id": "GFB98", "setting_id": "GFB98_MTC_0", "name": "Generic ASA @MyToolChanger", "renamed_from": "My Generic ASA @MyToolChanger", "from": "system", "instantiation": "true", "inherits": "Generic ASA @System", - "filament_flow_ratio": [ - "0.93" - ], - "filament_max_volumetric_speed": [ - "12" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json index 66ac2ff73c..76ab962feb 100644 --- a/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PA @MyToolChanger.json @@ -1,21 +1,11 @@ { "type": "filament", - "filament_id": "GFN99", "setting_id": "GFN99_MTC_0", "name": "Generic PA @MyToolChanger", "renamed_from": "My Generic PA @MyToolChanger", "from": "system", "instantiation": "true", "inherits": "Generic PA @System", - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "12" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json index 78f2ae0202..a0dfaa0829 100644 --- a/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PA-CF @MyToolChanger.json @@ -1,24 +1,11 @@ { "type": "filament", - "filament_id": "GFN98", "setting_id": "GFN98_MTC_0", "name": "Generic PA-CF @MyToolChanger", "renamed_from": "My Generic PA-CF @MyToolChanger", "from": "system", "instantiation": "true", "inherits": "Generic PA-CF @System", - "filament_type": [ - "PA-CF" - ], - "nozzle_temperature_initial_layer": [ - "280" - ], - "nozzle_temperature": [ - "280" - ], - "filament_max_volumetric_speed": [ - "8" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json index b3fa761a1e..0ff6bee88f 100644 --- a/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PC @MyToolChanger.json @@ -7,12 +7,6 @@ "from": "system", "instantiation": "true", "inherits": "Generic PC @System", - "filament_max_volumetric_speed": [ - "12" - ], - "filament_flow_ratio": [ - "0.94" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json index 1b4e8de6b0..27f0c96efc 100644 --- a/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PETG @MyToolChanger.json @@ -7,42 +7,6 @@ "from": "system", "instantiation": "true", "inherits": "Generic PETG @System", - "reduce_fan_stop_start_freq": [ - "1" - ], - "slow_down_for_layer_cooling": [ - "1" - ], - "fan_cooling_layer_time": [ - "30" - ], - "overhang_fan_speed": [ - "90" - ], - "overhang_fan_threshold": [ - "25%" - ], - "fan_max_speed": [ - "90" - ], - "fan_min_speed": [ - "40" - ], - "slow_down_min_speed": [ - "10" - ], - "slow_down_layer_time": [ - "8" - ], - "filament_flow_ratio": [ - "0.95" - ], - "filament_max_volumetric_speed": [ - "10" - ], - "filament_start_gcode": [ - "; filament start gcode\n" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json index 91e1ac329a..ef24ac2afb 100644 --- a/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA @MyToolChanger.json @@ -7,15 +7,6 @@ "from": "system", "instantiation": "true", "inherits": "Generic PLA @System", - "filament_flow_ratio": [ - "0.98" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "8" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json index 5600c63fa1..8be0250760 100644 --- a/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PLA-CF @MyToolChanger.json @@ -7,18 +7,6 @@ "from": "system", "instantiation": "true", "inherits": "Generic PLA-CF @System", - "filament_flow_ratio": [ - "0.95" - ], - "filament_type": [ - "PLA-CF" - ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], "filament_cooling_final_speed": [ "3.5" ], diff --git a/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json index fd1f0bec80..acb5e848af 100644 --- a/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json +++ b/resources/profiles/Custom/filament/Generic PVA @MyToolChanger.json @@ -7,18 +7,42 @@ "from": "system", "instantiation": "true", "inherits": "Generic PVA @System", - "filament_flow_ratio": [ - "0.95" + "filament_cooling_final_speed": [ + "3.5" ], - "filament_max_volumetric_speed": [ - "12" - ], - "slow_down_layer_time": [ - "7" - ], - "slow_down_min_speed": [ + "filament_cooling_initial_speed": [ "10" ], + "filament_cooling_moves": [ + "2" + ], + "filament_load_time": [ + "10.5" + ], + "filament_loading_speed": [ + "10" + ], + "filament_loading_speed_start": [ + "50" + ], + "filament_multitool_ramming": [ + "1" + ], + "filament_multitool_ramming_flow": [ + "40" + ], + "filament_stamping_distance": [ + "45" + ], + "filament_stamping_loading_speed": [ + "29" + ], + "filament_unload_time": [ + "8.5" + ], + "filament_unloading_speed": [ + "100" + ], "compatible_printers": [ "MyToolChanger 0.4 nozzle", "MyToolChanger 0.2 nozzle",